保护变量免受空值
Protecting Variable From Null Value
我有一些旧代码,我正在 运行 通过以确保它尽可能稳定。一次在一个蓝色的月亮上,有些东西坏了并在数据库中留下了一堆垃圾数据,所以我要检查一下可能会发生潜在错误的地方。我发现了一堆看起来像这样的变量赋值:
myVariable = dr.Item("myItem") & ""
如果 dr.Item("myItem")
解析为 Null,& ""
会保护 myVariable
不为 Null 并将其设置为 ""
还是 Null 会给我带来问题?
你一定会得到一个字符串,无论 dr.Item("myItem")
是一个字符串,Nothing
还是 DBNull.Value
。根据 documentation for the &
Operator:
The data type of result is String. If one or both expressions evaluate to Nothing or have a value of DBNull.Value, they are treated as a string with a value of "".
您不需要 &
运算符和类型 String
的额外实例,连接运算符将创建该实例。
使用.ToString()
方法
dr.Item("myItem").ToString()
DataRow.Item
属性 return 类型 Object
的实例。然后调用该实例的 ToString()
方法将 return 您所期望的情况(项目包含 String
类型的值)
如果项目包含 DbNull
值,则空字符串将被 returned
或使用扩展方法.Field(Of T)
dr.Field(Of String)("myItem")
DataRowExtensions.Field(Of T) Method (DataRow, String)
如果列不存在则Column not in the table
将抛出异常
我有一些旧代码,我正在 运行 通过以确保它尽可能稳定。一次在一个蓝色的月亮上,有些东西坏了并在数据库中留下了一堆垃圾数据,所以我要检查一下可能会发生潜在错误的地方。我发现了一堆看起来像这样的变量赋值:
myVariable = dr.Item("myItem") & ""
如果 dr.Item("myItem")
解析为 Null,& ""
会保护 myVariable
不为 Null 并将其设置为 ""
还是 Null 会给我带来问题?
你一定会得到一个字符串,无论 dr.Item("myItem")
是一个字符串,Nothing
还是 DBNull.Value
。根据 documentation for the &
Operator:
The data type of result is String. If one or both expressions evaluate to Nothing or have a value of DBNull.Value, they are treated as a string with a value of "".
您不需要 &
运算符和类型 String
的额外实例,连接运算符将创建该实例。
使用.ToString()
方法
dr.Item("myItem").ToString()
DataRow.Item
属性 return 类型 Object
的实例。然后调用该实例的 ToString()
方法将 return 您所期望的情况(项目包含 String
类型的值)
如果项目包含 DbNull
值,则空字符串将被 returned
或使用扩展方法.Field(Of T)
dr.Field(Of String)("myItem")
DataRowExtensions.Field(Of T) Method (DataRow, String)
如果列不存在则Column not in the table
将抛出异常