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

Както беше предложено от [Tim Schmelter], разгледайте типовете 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