работает в VB 2005 (dotnet 2.0), но ужасно.
Вы не можете использовать его как обычную переменную, я думал, что он может работать как тип Object, но это не так.
Вместо этого:
dim oInt as object
dim i as integer
if oInt is nothing then
msgbox("int is null")
else
i = cint(oInt)
end if
у вас есть это.
Dim oInt as nullable(of integer)
dim i as integer
if oInt.HasValue = false then
msgbox("int is null")
else
i = oInt.Value
end if
Проблема здесь в том, что если ваша переменная равна нулю, и вы случайно вызвали свойство Value, то это вызывает необработанное исключение.
так, например, мой любимый это.
AddParamToSQLCmd(sqlCmd, "@SomeID", SqlDbType.Int, 0, ParameterDirection.Input, iif(oInt.HasValue, oInt.Value, DBNull.value))
Приведет к ошибке во время выполнения, когда ваше Предполагаемое значение Nullable равно нулю !!!
так что это nullable (целое число) против кода объекта
обнуляемый (целого числа)
if oInt.HasValue then
AddParamToSQLCmd(sqlCmd, "@SomeID", SqlDbType.Int, 0, ParameterDirection.Input, oInt.Value)
else
AddParamToSQLCmd(sqlCmd, "@SomeID", SqlDbType.Int, 0, ParameterDirection.Input, dbnull.value)
end if
Object
AddParamToSQLCmd(sqlCmd, "@SomeID", SqlDbType.Int, 0, ParameterDirection.Input, oInt)