我正在创建一个类对象并使对象为空,然后打印对象,它不应该给出异常或显示任何内容

本文关键字:对象 不应该 打印 然后 任何内 显示 异常 创建 一个 | 更新日期: 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) 的输入处检查传递的值的原因