首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是DBNull对DBNull.Value.Equals()

是DBNull对DBNull.Value.Equals()
EN

Stack Overflow用户
提问于 2016-07-14 12:06:25
回答 3查看 1.1K关注 0票数 7

我很好奇使用if(some_value is DBNull)if(DBNull.Value.Equals(some_value))的利弊是什么。就我个人而言,我更喜欢if(some_value is DBNull),因为我发现它更具可读性。据if(DBNull.Value.Equals(some_value))介绍,我知道微软推荐使用https://msdn.microsoft.com/en-us/library/system.dbnull%28v=vs.110%29.aspx

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-14 12:17:29

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

为什么?

因为is将检查类型是否相等。它必须查找左手类型,并将其与右手类型相匹配,该类型也必须向上查找。之后,它可以比较这些类型,最有可能的方法是检查引用相等性。

这比仅仅检查引用相等性要低一些,而DBNull.Value.Equals就是这样做的。因为只有一个DBNull.Value实例,所以这个检查非常准确和快速。

票数 3
EN

Stack Overflow用户

发布于 2016-07-14 12:14:11

value is DBNull实际上检查value是否是DBNull类的实例,而value == DBNull.Value实际上在value和单例类DBNull的唯一实例之间执行引用比较。

value is DBNull检查value是否是DBNull的一个实例,这只有在value == DBNull.Value时才有可能,因为DBNull是单例的。

使用value == DBNull.Value的优点是它可以进行直接引用比较,这将比确定is DBNull比较的类型更有效。

票数 2
EN

Stack Overflow用户

发布于 2016-07-14 12:10:44

some_value is DbNull:检查some_value的类型DBNull类型。如果您可以实例化DBNull的实例或继承它,则可以使用此方法。但是不,这个类有私有构造函数,并且是密封的。

DBNull.Value.Equals(some_value):检查some_value的和由DBNull.Value表示的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38373783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档