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

标签 c#

<分区>

下面是一些示例代码:

static DateTime time;
if (time == null)
{
/* do something */
}

既然DateTime不能为null,为什么这段代码可以通过?

编辑: 问题不仅在于此代码总是返回 false,还在于为什么在这样的比较中允许像 DateTime 这样从不 null 的东西。

最佳答案

虽然time是一个不可为空的值类型,但它可以被转换为可空的并与null进行比较。比较会产生 false,这是一个有效的结果。

然而,这并不意味着它是一个好的代码。诸如 re:sharper 之类的工具会用一条警告标记这一行:“表达式总是错误的”。

关于c# - 为什么这是一个有效的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822826/

相关文章:

c# - 在 SQL Server 中将二进制文件保存为 BLOB 和文本(或从全文索引中获取文本)

c# - 我可以将 xaml ApplicationResources 与 MvvmCross 应用程序一起使用吗

c# - 在下拉列表中显示层次结构

c# - 后退按钮专注于列表操作

c# - AsyncLocal 值与 TPL 数据流不正确

C# + UWP : Convert Windowspath to ms-appdata uri

c# - 为什么 C# 中的方法不是自动虚拟的?

c# - C#中的循环左旋转算法

c# - WCF 动态绑定(bind) - 如何指定端点?

c# - 有没有办法导致传递给 Control.BeginInvoke 的委托(delegate)的类型推断?