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

时间:2009-10-14 09:03:00

标签: c#

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

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

5 个答案:

答案 0 :(得分:40)

  • (string)obj casts obj加入stringobj必须已成为string才能成功。
  • obj.ToString()通过调用ToString()方法获取obj的字符串表示形式。当objobj时,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)是可以在自己的类中实现的类型,字符串类,因此你没有能力。