Vb.net преобразовать целое число DBNULL в 0 - ошибка

У меня есть этот метод:

Private Function convertInteger(intInteger As Object) As Integer

    If IsDBNull(intInteger) Then
        convertInteger = 0
    Else
        convertInteger = cInt(intInteger)
    End If

End Function

Но он возвращает эту ошибку:

оператор '=' не определен для типа 'integer' и типа 'dbnull'

Я пытаюсь преобразовать значение DBnull в 0..

Но проблема в том, что значение, которое я пытаюсь преобразовать, не всегда равно DBnull. Итак, как мне с этим справиться?


person MMM    schedule 17.09.2012    source источник
comment
Почему бы вам не использовать Nullable(Of Int32)? Он имеет HasValue. имущество.   -  person Tim Schmelter    schedule 17.09.2012
comment
Включите Option Strict в настройках проекта. Затем исправьте ошибки компиляции. Тогда возвращайся сюда.   -  person Konrad Rudolph    schedule 17.09.2012
comment
Вау, это решило проблему, Конрад! большое спасибо!   -  person MMM    schedule 17.09.2012


Ответы (3)


Попробуй это

Private Function convertInteger(intInteger As Object) As Integer

    If intInteger = DBNull.Value Then
        Return 0
    End If

    Return intInteger

End Function

Как предложил [Тим Шмельтер], изучите типы Nullable.

person codingbiz    schedule 17.09.2012
comment
Пожалуйста, не предлагайте старый синтаксис VB methodName=returnValue, который работает только из соображений совместимости. VB.NET работает так же, как C#, имеет возвращаемое значение: return 0. - person Tim Schmelter; 17.09.2012
comment
Прошу прощения за это. Я даже не видел название функции - person codingbiz; 17.09.2012

Попробуй это

Private Function convertInteger(ByVal intInteger As Object) as Integer
   If IsDBNull(intInteger) Then
       Return 0
   Else
       Return CInt(intInteger)
   End if
End Function
person ahmed    schedule 30.03.2015

person    schedule
comment
Отредактируйте сообщение, чтобы добавить правильное форматирование кода. Также рассмотрите возможность добавления каких-либо пояснений к вашему коду. - person Pochmurnik; 08.10.2019