2012-11-19 111 views
1

你可以看看下面的代碼,並說出爲什麼這個代碼在列值爲空時不會拋出異常?爲什麼DataRow空值的這個解引用不會引發異常?

DataTable table = new DataTable(); 
table.Columns.Add("PreviewHtml"); 

table.Rows.Add(new object[] { "aksdhaskldh" }); 
table.Rows.Add(new object[] { "129836 128o tagjk 1782 3" }); 
table.Rows.Add(new object[] { null }); 
table.Rows.Add(new object[] { "1278o36 " }); 


foreach (DataRow r in table.Rows) 
{ 
    Console.WriteLine(r["PreviewHtml"].ToString()); 
} 

回答

6

這是因爲DBNull.ToString返回一個空字符串。

DataColumn的AllowDBNull屬性默認設置爲true,否則您無法添加null值。

Null值轉換爲DBNull.Value,AutoIncrementnull通過時,列也會增加。

+0

是的....爲什麼我想念這件事? :) 謝謝! – Vytalyi

+0

換句話說,'r [「PreviewHtml」]'不是'null',即使'null'是被添加的。我想這可能有點混亂。 – hvd

+0

@Vytalyi因爲你期望'DBNull.ToString()'拋出異常? :) – Bazzz

相關問題