我正在创建一个类对象并使对象为空,然后打印对象,它不应该给出异常或显示任何内容
本文关键字:对象 不应该 打印 然后 任何内 显示 异常 创建 一个 | 更新日期: 2023-09-27 18:32:12
我正在创建一个类的对象并使对象为空,然后打印对象,它不应该给出异常或显示任何内容。为什么?
class A
{
}
Main()
{
A obj=new A();
obj=null;
Console.Write(obj);
}
Console.Write
实现方式如下:
// Writes the text representation of an object to the text stream. If the
// given object is null, nothing is written to the text stream.
// Otherwise, the object's ToString method is called to produce the
// string representation, and the resulting string is then written to the
// output stream.
//
public virtual void Write(Object value) {
if (value != null) {
IFormattable f = value as IFormattable;
if (f != null)
Write(f.ToString(null, FormatProvider));
else
Write(value.ToString());
}
}
因此,当您传递 null
值时,不会写入任何内容,也不会为对象调用ToString
方法。因此也不例外。
ToString
对象的实现在 Console.Write/WriteLine
中调用,如果传递的对象null
,那么它可能会引发 Null 引用异常。这就是为什么在方法 if (value != null)
的输入处检查传递的值的原因。