object o;
o.ToString()
和(string) o
之间有什么区别吗?
答案 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);