我正在尝试编写一个泛型函数,它将检查每个数据库参数以查看它是否为null,如果是,则返回DBNull;如果没有,请返回该对象。
所以这是我的功能:
Public Shared Function CheckForNull(ByVal obj As Object) As Object
If obj <> Nothing Then Return obj Else Return DBNull.Value
End Function
我的问题是我传递给函数的一些对象是Nullable。所以我可以传递一个长的函数?或Int?,但当可空类型传递给函数时,它将转换为其值类型。如果我通过Long?如果值为0,则函数返回DBNull因为Long?转换为Long,Long的值为0,等于Nothing。反正是否也使这个函数适用于Nullable类型?
如果没有,我将回到使用以下语句而不是一个通用的函数调用:
IIf(nullableVar.HasValue, nullableVar, DBNull.Value))
和
IIf(nonNullableVar IsNot Nothing , nonNullableVar, DBNull.Value))
答案 0 :(得分:2)
这不是你的逻辑失败的原因。当评估诸如(x = y)或(x&lt; y)y的表达式时,如果任一参数为Nothing,则VB.Net返回FALSE。您的条件总是落到ELSE子句。所以而不是:
if obj <> Nothing then
试试这个:
if obj isnot nothing then