ToString方法和强制转换为字符串有什么区别吗?

12
object o;

o.ToString()(string) o 有什么区别吗?


1
你为什么这样问?能解释一下更大的背景吗? - Shadow The Spring Wizard
7个回答

19

有区别,每个对象都有一个ToString方法,但并非每个对象都可以强制转换为字符串。

int i = 10;
string s1 = i.ToString(); // OK
string s2 = (string)i;    // Compile error.

object o = 10;
string s3 = o.ToString(); // OK
string s4 = (string)o;    // Runtime error.

12

ToString() 在对象为 null 时会引发异常,而 (string) 转换则不会。


3
如果你想要安全地将对象转换为字符串,只需使用以下方法:
string s = Convert.ToString(o);

3

object.ToString()会将对象转换为字符串。如果对象的值为null,则会抛出异常,因为没有null值的ToString()方法。

(string)object是将引用类型拆箱为值类型的过程。这里将object的值复制到新的字符串类型实例中。如果object为null,则会赋予null值。


0

是的,ToString() 是每个类型都实现的方法(因为每个类型都继承自实现该方法的 System.Object)。某些类型可能会重写此方法以提供自己的自定义覆盖实现。调用 ToString() 应始终成功并返回一个字符串实例(尽管对于某些实现来说它可能为空)。

var x = new AnyArbitraryObjectType();
var y = x.ToString(); // will always succeed (if ToString has not been overridden, or if it has been overridden properly)

类型转换是将给定对象引用转换为字符串类型引用的过程。如果被转换的引用不是字符串类型,则转换将失败。

var a = "hello";
var b = 5;

var x = (string)a; // will succeed
var y = (string)b; // will fail with InvalidCastException

0

是的,它们两者非常不同。

string anObjectString = (string)anObject; 是类型转换或类型转换只有在类型转换是有效的情况下才会成功。

ToString() 是框架中所有对象都可用的方法。它是一个虚拟方法,其中默认实现返回对象的类型名称。

我们正在比较苹果和橙子..


0
基本上 ToString() 是一个函数,它返回表示您应用它的对象的字符串。
作为类型的字符串就像 int - 一个原始类型(在 c# 中是一个对象)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接