[英]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.