繁体   English   中英

是什么原因导致`.toString()`方法在值为null时引发异常,而Convert..ToString()`自动处理null值

[英]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并且在objnull时不会引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM