转换为字符串而不是调用ToString
object obj = "Hello"; string str1 = (string)obj; string str2 = obj.ToString();
(string)obj
和obj.ToString()
之间有什么区别?
-
(string)obj
将obj
转换为string
。obj
必须已经成为一个string
才能成功。 -
obj.ToString()
通过调用ToString()
方法获取obj
的字符串表示forms。 当obj
是一个string
时,obj
本身就是obj
。 这(应该)永远不会抛出exception。
所以在你的具体情况下,两者都是等价的。
请注意, string
是引用类型 (而不是值类型 )。 因此,它inheritance自对象,并且不会发生任何拳击 。
如果有任何帮助,您可以使用类似于强制转换的’as’运算符,但在任何转换失败时返回null而不是exception。
string str3 = obj as string;
在最基本的层面:
(string)obj
将尝试将obj
转换为string
,如果没有有效的转换,则会失败。
obj.ToString()
将返回obj
的设计者决定代表该对象的string
。 默认情况下,它返回obj
的类名。
(string)obj强制转换对象,如果obj不为null且不是字符串,则会失败。
obj.ToString()将obj转换为字符串(即使它不是字符串),它将失败是obj为null,因为它是一个方法调用。
ToString()是对象类方法(.net中的主要父类),它可以在您的类中重载,即使您没有从对象类inheritance,它仍inheritance自对象类。
(字符串)是可以在类自身实现的类型,字符串类,因此你没有能力。