c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?

标签 c# .net

考虑以下代码:

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/

相关文章:

c# - += delegate {} 是将自定义 eventargs 附加到 UI 控件事件的正确方法吗?

c# - 为什么这个特定的 TimeSpan 格式字符串在 .NET 4 中停止工作?

c# - .net 文档用 mshtml 写

c# - 如何使用 Mono.Cecil 保存更改的程序集?

c# - LINQ 使用左外连接对多个字段进行连接查询

.net - .NET字符串的内部格式是什么?

c# - 如何在C#中将数据从文本框插入到datagridview

c# - 完整性检查 : Do these nested . 所有调用都等同于 LINQ 中相应的 .Where 和 .SelectMany 调用?

.net - 有人成功使用免注册COM和.NET组件吗?

.net - 我应该在同一台机器上运行的 Firefox 扩展和 C# 代码之间使用哪种 IPC 方法?