c# - 是 DBNull 与 DBNull.Value.Equals()

标签 c# dbnull

我很好奇使用 if(some_value is DBNull)if(DBNull.Value.Equals(some_value)) 的优缺点是什么。 我个人更喜欢 if(some_value is DBNull) 因为我觉得它更具可读性。 我知道 Microsoft 建议根据 https://msdn.microsoft.com/en-us/library/system.dbnull%28v=vs.110%29.aspx 使用 if(DBNull.Value.Equals(some_value)) .

最佳答案

我会选择 DBNull.Value.Equals 方式。

为什么?

因为 is 将检查类型是否相等。它必须查找左手类型并将其与它也必须查找的右手类型进行匹配。之后它可以比较类型,很可能是通过检查引用相等性。

这会比仅检查引用相等性效率低,后者是 DBNull.Value.Equals 所做的。由于只有一次 DBNull.Value 实例,因此此检查非常准确且非常快速。

关于c# - 是 DBNull 与 DBNull.Value.Equals(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38373783/

相关文章:

c# - 如何从数据库返回空值

c# - Null 参数不适用于 Access 和 OLE

c# - 在 C# 中处理 DBNull

c# - 无法添加和获取自定义声明值

c# - 如果控件的 Eval 值为 null,则隐藏 div

带有 DBNULL 的 ASP.Net 检查值

c# - 使用 C# 将默认值插入 SQL Server

c# - 从枚举中获取 DescriptionAttribute

c# - 内部通用类型与外部相同 - 编译器警告

c# - .NET:GetDeclaredProperty() 和 GetProperty() 之间有什么区别?