代码之家  ›  专栏  ›  技术社区  ›  Robert Vogelezang

为什么null未写入输出窗口?

  •  3
  • Robert Vogelezang  · 技术社区  · 7 年前

    z包含NULL。为什么输出窗口不显示空值?是因为NULL不是一个值吗?

    int? x = null;
    int? y = 1;
    int? z = 0;
    z = x + y;
    Debug.WriteLine(z);
    

    Output window does not show null

    1 回复  |  直到 7 年前
        1
  •  9
  •   nkr user2915097    7 年前

    当你看着 reference source of Console.WriteLine(Object) ,你可以看到。净呼叫数 System.IO.TextWriter.WriteLine(Object) 它会显式检查 null 然后将输出一个空行:

    public virtual void WriteLine(Object value) {
        if (value==null) {
            WriteLine();
        }
        else {
            // Call WriteLine(value.ToString), not Write(Object), WriteLine().
            // This makes calls to WriteLine(Object) atomic.
            IFormattable f = value as IFormattable;
            if (f != null)
                WriteLine(f.ToString(null, FormatProvider));
            else
                WriteLine(value.ToString());
        }
    }
    

    Debug.WriteLine(Object) 行为方式相同,但有点复杂。它最终会调用 System.Diagnostics.TraceListener.WriteLine(Object)