簡體   English   中英

是DBNull與DBNull.Value.Equals()

[英]is DBNull vs. 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的實例或從中繼承,則可以使用此方法。 但不,這個類有私有構造函數並且是密封的。

DBNull.Value.Equals(some_value)針對由所表示的值的SOME_VALUE檢查 DBNull.Value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM