2012-11-19 71 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

相关问题