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.
ToString()
在对象为 null
时会引发异常,而 (string)
转换则不会。
string s = Convert.ToString(o);
object.ToString()
会将对象转换为字符串。如果对象的值为null,则会抛出异常,因为没有null值的ToString()
方法。
而(string)object
是将引用类型拆箱为值类型的过程。这里将object
的值复制到新的字符串类型实例中。如果object
为null,则会赋予null值。
是的,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
是的,它们两者非常不同。
string anObjectString = (string)anObject;
是类型转换或类型转换只有在类型转换是有效的情况下才会成功。
ToString()
是框架中所有对象都可用的方法。它是一个虚拟方法,其中默认实现返回对象的类型名称。
我们正在比较苹果和橙子..