c# – 为什么这是一个有效的比较

前端之家收集整理的这篇文章主要介绍了c# – 为什么这是一个有效的比较前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > C# okay with comparing value types to null10个
这是一些示例代码
static DateTime time;
if (time == null)
{
/* do something */
}

由于DateTime不能为null,为什么这段代码会编译?

编辑:
问题不仅仅是这段代码总是返回false,而是为什么在这样的比较中允许类似DateTime的东西,它永远不会为null.

解决方法

虽然时间是不可为空的值类型,但它可以转换为可空,并与null进行比较.比较会产生错误,这是一个有效的结果.

但是,这并不意味着它是一个很好的代码.诸如re:sharper之类的工具会标记此行,并显示“Expression is always false”的警告.

猜你在找的C#相关文章