我正在尝试做一些类似于这里描述的事情,但使用可以为空的类型。
http://www.csharp-station.com/Tutorials/Lesson23.aspx
int availableUnits = unitsInStock ?? 0;
在 VB 中,它会是这样的:
Dim availableUnits As Int32 = If(unitsInStock, 0)
但是,我正在使用可能是 DbNull 的 db 列和可以为 Nothing 的可为空类型(这与 DbNull 不同)。如果一列是DbNull,我想返回Nothing,否则返回值。例如:
Dim availableUnits As Int32? = If(myDataReader("UnitsInStock").Value, Nothing)
我得到的错误是“指定的演员表无效”,但我不知道为什么。我也试过这个:
Dim availableUnits As Int32? = If(isDbNull(myDataReader("UnitsInStock").Value), myDataReader("UnitsInStock").Value, Nothing)
这很混乱,只会导致同样的错误。唯一有效的是:
Dim availableUnits As Int32?
If isDbNull(myDataReader("UnitsInStock").Value) Then
availableUnits = myDataReader("UnitsInStock").Value
Else
availableUnits = Nothing
End If
这很愚蠢。有没有更好的方法可以将可空数据库值转换为我不知道的可空变量?