我很好奇使用 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/