为什么DataRow null值的这种取消引用不会抛出异常?

Vyt*_*lyi 1 c# ado.net

您可以查看下面的代码,并说明为什么当列值为空时此代码不会引发异常?

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());
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 6

这是因为DBNull.ToString返回一个空字符串.

AllowDBNull默认情况下,DataColumn的属性设置为true,否则您无法添加null值.

Null值被转换为DBNull.Value,AutoIncrement列在null传递时也会递增.