Я пытаюсь сделать что-то похожее на то, что описано здесь, но с обнуляемыми типами.
http://www.csharp -station.com / Tutorials / Lesson23.aspx
int availableUnits = unitsInStock ?? 0;
В VB это было бы так:
Dim availableUnits As Int32 = If(unitsInStock, 0)
Однако я работаю со столбцами db, которые могут быть DbNull, и типами, допускающими нулевые значения, которые могут быть 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
Что просто глупо.Есть ли лучший способ получить значения db, допускающие значения NULL, в переменные, которые я не знаю?