我遇到了一个困扰我的错误。我有 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
的实例,它将设置 s
为 null
. 请注意,对于 as
,显式转换运算符将被忽略。
如果 obj["role"]
既不是 string
也不是具有到 string
的显式转换运算符的类的实例,你不得不说
string s = obj["role"].ToString();
但要小心,后者可能会抛出一个NullReferenceException
。
关于c# - .ToString()、(字符串)或作为字符串。什么时候用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961696/