ToString方法和转换为字符串之间有区别吗?

时间:2010-11-11 07:30:18

标签: c# .net

object o;

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

7 个答案:

答案 0 :(得分: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.

答案 1 :(得分:11)

当对象为ToString()时,

null会引发异常,而(string)转换则不会。

答案 2 :(得分:1)

object.Tostring()将对象转换为string.If对象具有null值 它将抛出异常,因为没有null具有ToString()方法。

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

答案 3 :(得分:0)

是的,他们俩都非常不同。

string anObjectString = (string)anObject;是类型转换或类型转换只有在类型转换是有效

时才会成功

ToString()是一种可用于框架中所有对象的方法。它是一种虚方法,默认实现返回对象的Type名称。

我们在这里将苹果与橙子进行比较..

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

基本上ToString()是一个返回表示您应用它的对象的字符串的函数。

字符串作为一个类型就像一个int - 一个原语(在c#中它是一个对象)

答案 6 :(得分:0)

如果您正在从对象安全地转换为字符串,请使用:

string s = Convert.ToString(o);