【发布时间】:2017-01-24 19:48:10
【问题描述】:
我在 MSDN 上看到:
null 关键字是一个字面量,表示一个空引用,一个 不引用任何对象。
但我已经看到以下代码在运行时没有抛出任何异常:
int? i = null;
var s = i.ToString();
那么如果变量i 为null,为什么我可以执行它的方法呢?
【问题讨论】:
-
想一想,你必须能够调用
i.HasValue来确定它是否为空......如果不总是存在实例,你将如何做到这一点. -
在这种特殊情况下,您可以随时查看 .net 源代码:referencesource.microsoft.com/mscorlib/system/…
public override string ToString() { return hasValue ? value.ToString() : ""; }