c# - .ToString()、(字符串)或作为字符串。什么时候用什么?

标签 c# .net asp.net asp.net-mvc

我遇到了一个困扰我的错误。我有 JObject,我认为可以用

obj["role"].ToString()

字符串就在那里,什么都有。最后的办法是改成

(string)obj["role"] 

只是为了看看会发生什么,它是否有效。我的问题是我如何知道何时使用 .ToString() 而不是 (string) 而不是“as String”。

最佳答案

如果对象是一个string,或者(string)有一个明确的强制转换运算符,那么就可以说

string s = (string)obj["role"];

否则,这会给你一个InvalidCastException

注意这里你可以说

string s = obj["role"] as String;

如果 obj["role"] 不是 string 的实例,它将设置 snull . 请注意,对于 as,显式转换运算符将被忽略。

如果 obj["role"] 既不是 string 也不是具有到 string 的显式转换运算符的类的实例,你不得不说

string s = obj["role"].ToString();

但要小心,后者可能会抛出一个NullReferenceException

关于c# - .ToString()、(字符串)或作为字符串。什么时候用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961696/

相关文章:

.net - .NET 中的包装类型 : struct or class?

c# - 需要一些帮助在两个 .NET 实例之间进行转换

c# - Windows 的优雅编程关闭

c# - Visual Web Developer 2010 Express - 创建面向 .NET 2.0 的 ASP.NET 网站

c# - C#Powershell-Exchange管理{“Value cannot be null.\r\nParameter name: serverSettings”}

c# - 某些编译器发出的奇怪 IL 代码

c# - ASP.NET MVC 路由将用户从局部 View 返回到原点

.net - VS2005中asp.net调试问题

c# - 我应该在共享主机上加密 web.config 吗?

c# - 在 C# 中使用授权制作 HTTP Post