Сделать Целое Число 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)

наслаждайтесь!


_intDLocation = Nothing