Сделать Целое Число Null
у меня есть функция обновления, которая обновляет таблицу БД sql server через набор данных. Одно из полей в таблице является целым числом и принимает значения null. Поэтому, когда я заполняю функцию обновления, мне нужен способ ввести 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
4 ответов
целые числа не могут быть установлены в 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
в некоторых случаях вам нужно будет получить доступ к значению как фактическое целое число, а не целое число nullable. Для тех случаев, вы просто доступ
_intDLocation.Value
Читайте все о Nullable здесь.
попробуйте это:
Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Nullable(Of Integer)
If Not String.IsNullOrEmpty(_dLocation) Then
_intDLocation = Integer.Parse(_dLocation)
End If
мое приложение использует много меток, которые начинаются с пустого (свойство 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)
наслаждайтесь!