VB.NET泛型函数,用于检查null值

时间:2010-08-24 14:17:01

标签: vb.net

我正在尝试编写一个泛型函数,它将检查每个数据库参数以查看它是否为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))

1 个答案:

答案 0 :(得分:2)

这不是你的逻辑失败的原因。当评估诸如(x = y)或(x&lt; y)y的表达式时,如果任一参数为Nothing,则VB.Net返回FALSE。您的条件总是落到ELSE子句。所以而不是:

if obj <> Nothing then

试试这个:

if obj isnot nothing then