考虑以下代码:
DateTime? ndate = null;
Console.WriteLine(ndate.HasValue);
我本以为会出现 NullReferenceException,但 HasValue 确实会返回 false。但是,由于 ndate 为空,属性调用如何成功,因为没有对象可以调用属性 HasValue 呢?
最佳答案
从技术上讲,“ndate”不是 null - 它是一种值类型,其值指定为 null。
当你写 DateTime?
, 这只是 Nullable<DateTime>
的简写,这是一个结构。从技术上讲,这不可能为 null,因为它不是引用类型。
关于c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194617/