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

Emb*_*rja 32 c#

object obj = "Hello";
string str1 = (string)obj;
string str2 = obj.ToString();
Run Code Online (Sandbox Code Playgroud)

(string)obj和之间有什么区别obj.ToString()

Mac*_*Mac 41

  • (string)obj 投入 objstring.obj必须已经成为一个string成功的目标.
  • obj.ToString()obj通过调用ToString()方法获取字符串表示形式.这是obj什么时候obj是一个string.这(应该)永远不会抛出异常.

所以在你的具体情况下,两者都是等价的.

请注意,这string是一种引用类型(与值类型相对).因此,它继承自对象,并且不会发生任何拳击.

  • 对象不一定必须是一个字符串才能成功.如果定义了显式转换运算符,它也可以工作. (8认同)
  • 如果obj为null,则ToString()将抛出异常. (2认同)

Nic*_*sao 12

如果有任何帮助,您可以使用类似于强制转换的'as'运算符,但在任何转换失败时返回null而不是异常.

string str3 = obj as string;
Run Code Online (Sandbox Code Playgroud)


Chr*_*isF 9

在最基本的层面:

(string)obj将尝试转换obj为a string并且如果没有有效转换将失败.

obj.ToString()将返回已决定string的设计者obj代表该对象.默认情况下,它返回类名obj.