z包含NULL.为什么输出窗口不显示NULL?是因为NULL不是值吗?
int? x = null;
int? y = 1;
int? z = 0;
z = x + y;
Debug.WriteLine(z);
Run Code Online (Sandbox Code Playgroud)
当您查看参考源时Console.WriteLine(Object),您可以看到System.IO.TextWriter.WriteLine(Object)显式检查的.NET调用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());
}
}
Run Code Online (Sandbox Code Playgroud)
Debug.WriteLine(Object)行为方式相同,但有点复杂.它最终打电话System.Diagnostics.TraceListener.WriteLine(Object).