Сделать 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)

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