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

object o; 

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

是的,有区别。 每个对象都有一个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. 

当对象为nullToString()引发exception, (string)转换不会。

object.Tostring()将对象转换为string。如果对象具有null值,那么它将抛出exception,因为没有null具有ToString()方法。

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

是的他们俩都非常不同。

string anObjectString = (string)anObject; 是类型转换或类型转换只有在类型转换是有效转换时才会成功

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

我们在这里比较苹果和橙子..

是的, ToString()是每个类型实现的方法(因为每个类型都inheritance自实现该方法的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) 

强制转换是将给定对象引用转换为以字符串forms输入的引用。 如果要转换的引用不是字符串,则转换将失败。

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

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

string作为一个类型就像一个int – 一个原语(在c#中它是一个对象)

如果您在从对象到字符串的安全转换后使用:

 string s = Convert.ToString(o);