![](/img/trans.png)
[英]Why does .ToString() on a null string cause a null error, when .ToString() works fine on a nullable int with null value?
[英]what is reason that `.toString()` method throw an exception when value is null while Convert`.ToString()` automatic handle null value
原因是,当value为null时, .ToString()
方法引发异常,而Convert.ToString()
自动处理C#中的null值是什么原因。
Object.ToString()
是在Object
类的实例上调用的实例方法 。 如果该实例是空引用,则您正在调用不存在的实例的方法(未实例化,不引用任何东西)。 在调用它引用的参考任何方法null
将产生一个空引用异常。
另一方面, Convert.ToString(someObject)
是Convert
类的静态方法 ,该方法接受实例someObject
并将其转换为字符串。 在这种情况下, someObject是方法的参数,因此可以为null。
说ToString()
在null
对象上调用时会引发异常是不正确的,因为在null
对象上调用的任何方法都会引发异常。 CLR 在决定要调用哪个对象调用ToString
之前先检查该对象是否为null
,看到null
并引发异常。
另一方面,Convert.ToString()是静态调用的,因此不会立即抛出。 现在,方法本身(而不是CLR)有机会检查对象是否为null
,并返回在这种情况下要返回的内容。
C#使您与?.
具有几乎相同的效果?.
接线员:如果您这样做
string s = obj?.ToString();
s
将为null
并且在obj
为null
时不会引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.