转换为字符串而不是调用ToString

object obj = "Hello"; string str1 = (string)obj; string str2 = obj.ToString(); 

(string)objobj.ToString()之间有什么区别?

  • (string)objobj转换为stringobj必须已经成为一个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自对象类。

(字符串)是可以在类自身实现的类型,字符串类,因此你没有能力。