是DBNull与DBNull.Value.Equals()

我很好奇什么是使用if(some_value is DBNull)if(DBNull.Value.Equals(some_value)) 。 我个人更喜欢if(some_value is DBNull)因为我觉得它更具可读性。 我知道微软建议根据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实例,因此此检查非常准确且速度非常快。


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

value is DBNull检查是否value是的一个实例DBNull ,这是唯一可能的,如果value == DBNull.Value ,由于DBNull是一个单。

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


some_value is DbNull :根据DBNull类型检查some_value的类型。 如果你可以实例化一个DBNull OR实例或从它继承,那么可以使用它。 但是,不,这个班有私人建设者,并且是密封的。

DBNull.Value.Equals(some_value)针对由所表示的值的SOME_VALUE检查 DBNull.Value

链接地址: http://www.djcxy.com/p/92577.html

上一篇: is DBNull vs. DBNull.Value.Equals()

下一篇: Unable to load IRKernel in Jupyter notebook