2010-08-03 67 views
16

我可以使用任何方法檢查數據行上的DBnull我應該用什麼來比較DBNull?使用DBNull.Value或ToString()。IsNullOrEmpty()

無論是使用

if(dr[0][0]==DBNull.Value) 
//do somethin 

或做

if(dr[0][0].ToString().IsNullOrEmpty()) 
//do something 

在兩種情況下我會得到相同的結果。

但是哪一個是conecptually正確的方法。哪一個會使用較少的資源

+0

'.ToString()。IsNullOrEmpty()'?數據**行**是否有2個索引,「dr [0] [0]」?而如果'dr [0] [0]'爲空,你不能調用'.ToString()'。通常最好提供工作代碼以獲得更好的答案。 – Kobi 2010-08-03 06:10:14

+0

@Kobi:我的錯誤你說得對我的意思是說DataTable如果對於第二種情況採用兩個索引器 – 2010-08-03 06:15:38

+0

,如果該列中的值爲空,那麼將會出現錯誤 – devnull 2010-08-03 06:21:40

回答

15

第一種方法有點正確。 但是,比較公認的說法是:

if (dr[0][0] is DBNull) 

而第二種方式是絕對不正確。如果使用第二種方法,你會在兩種情況下得到真正:

  1. 你的價值是爲DBNull
  2. 你的值是一個空字符串
5

概念上比較DBNull.Value是正確的。

您還可以使用:

if (Convert.IsDBNull(dr[0])) 
{ 
} 

你也可以使用,這我不是球迷,純粹是因爲它是一種類型的比較,而不是值比較:

if (dr[0] is DBNull) 
{ 
} 
+0

儘管如此,第二個讀取也很好。 – cdmckay 2013-05-08 17:37:30

0

是始終使用:

dr[0].IsNull(0) 

假設此功能的創建者知道最佳方式/最有效的方式aring ..

相關問題