object obj = "Hello";
string str1 = (string)obj;
string str2 = obj.ToString();
(string)obj
和obj.ToString()
之间的区别是什么?
答案 0 :(得分:40)
(string)obj
casts obj
加入string
。 obj
必须已成为string
才能成功。obj.ToString()
通过调用ToString()
方法获取obj
的字符串表示形式。当obj
为obj
时,string
本身就是string
。这(应该)永远不会抛出异常。所以在你的具体情况下,两者都是等价的。
请注意,{{1}}是reference type(而不是value type)。因此,它继承自object,并且不会发生boxing。
答案 1 :(得分:12)
如果有任何帮助,你可以使用类似于强制转换的'as'运算符,但在任何转换失败时返回null而不是异常。
string str3 = obj as string;
答案 2 :(得分:9)
在最基本的层面:
(string)obj
会尝试将obj
投放到string
,如果没有有效的转化,则会失败。
obj.ToString()
将返回string
设计者obj
已决定代表该对象的obj
。默认情况下,它返回类名{{1}}。
答案 3 :(得分:2)
(string)obj强制转换对象,如果obj不为null且不是字符串,则会失败。
obj.ToString()将obj转换为字符串(即使它不是字符串),它将失败,obj为null,因为它是一个方法调用。
答案 4 :(得分:1)
ToString()是对象类方法(.net中的主要父类),它可以在您的类中重载,即使您没有从对象类继承,也可以从类继承。
(string)是可以在自己的类中实现的类型,字符串类,因此你没有能力。