Сделать Integer Null
У меня есть функция обновления, которая обновляет таблицу db сервера SQL через набор данных. Одним из полей в таблице является целое число и принимает значения NULL. Поэтому, когда я заполняю функцию обновления, мне нужен способ ввода нулевого значения, когда функция хочет целое число.
Я попытался сделать это таким образом, но _intDLocation = ""
выдает исключение
Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Integer
If _dLocation <> "" Then
_intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text)
Else
'NEED HELP HERE
_intDLocation = ""
End If
Ответы
Ответ 1
Целые числа не могут быть установлены в Null. Вы должны сделать целое число "nullable", добавив знак вопроса после слова Integer. Теперь _intDLocation больше не является нормальным целым числом. Это экземпляр Nullable(Of Integer)
.
Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Integer?
If _dLocation <> "" Then
_intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text)
Else
_intDLocation = Nothing
End If
Позже, если вы хотите проверить значение null, вы можете использовать этот удобный, читаемый синтаксис:
If _intDLocation.HasValue Then
DoSomething()
End If
В некоторых случаях вам нужно получить доступ к значению как действительное целое число, а не целое число с нулевым значением. В этих случаях вы просто получаете доступ к
_intDLocation.Value
Читайте все о Nullable здесь.
Ответ 2
Попробуйте следующее:
Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Nullable(Of Integer)
If Not String.IsNullOrEmpty(_dLocation) Then
_intDLocation = Integer.Parse(_dLocation)
End If
Ответ 3
_intDLocation = Nothing
Ответ 4
В моем приложении много ярлыков, которые начинаются с пустого (свойство Text), но их нужно увеличивать как целые числа, поэтому я сделал эту удобную функцию:
Public Shared Function Nullinator(ByVal CheckVal As String) As Integer
' Receives a string and returns an integer (zero if Null or Empty or original value)
If String.IsNullOrEmpty(CheckVal) Then
Return 0
Else
Return CheckVal
End If
End Function
Это типичный пример того, как он будет использоваться:
Dim Match_Innings As Integer = Nullinator(Me.TotalInnings.Text)
Наслаждайтесь!