在数据集中查找空值 - DataRow.IsNull方法vs == DbNull.Value - c#

Jar*_*rod 15 dbnull datarow isnull dataset c#-4.0

使用c#方法DataRow.IsNull确定空值是否超过检查行是否等于DbNull.value有什么好处?

if(ds.Tables[0].Rows[0].IsNull("ROWNAME")) {do stuff}
Run Code Online (Sandbox Code Playgroud)

VS

if(ds.Tables[0].Rows[0]["ROWNAME"] == DbNull.value) {do stuff}
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 22

没有实际的实际好处.使用对您来说更具可读性的任何一个.

至于它们之间的特殊差异,基本答案是IsNull查询列中特定记录的空状态.使用== DBNull.Value实际检索值并在它实际为null的情况下进行替换.换句话说,IsNull检查状态而不实际检索该值,因此稍微更快(理论上至少).

理论上,如果您要使用自定义存储类型,列可能会返回除null值之外的其他内容DBNull.Value,但这从未完成(根据我的经验).如果是这种情况,IsNull将处理存储类型使用的东西以外的情况DBNull.Value,但是,再次,我从未见过这样做.


Jon*_*onH 8

DBNull.Value != null

DBNull.Value代表具有该值的列<NULL>.弹出一个表并返回一些行,查看任何行中的任何列是否包含<NULL>(ctrl 0)值.如果你看到一个等同于DBNull.Value的.

如果您将值设置为null或DBNull.Value,那么您将要使用IsNull().如果值为null或DBNull.Value,则返回true.考虑以下:

row["myCol"] = null;

row["myCol"] = DBNull.Value

if (row["myCol"] == DBNull.Value) //返回true

if (row["myCol"] == null) //返回false

if (row.IsNull("myCol")) //返回true

关键是如果您只是检查null或DBNull.Value使用IsNull,如果您只是检查DBNull.Value明确说出并使用它.