Как использовать нулевое значение в double в VB.Net 2010?

Прямой вопрос: у меня есть несколько переменных, которые являются двойными. Я хотел бы иметь возможность хранить "нулевое" состояние в них, т.е. мне нужно иметь возможность представлять, что переменная не содержит допустимых данных. Я бы действительно не хотел связывать булеву переменную "валидно" с каждым двойным числом, что было бы уродливо и, вероятно, не нужно.

Во-первых, я обнаружил, что нужно объявить переменную по-разному, чтобы можно было проверить концепцию IsNothing, поэтому я делаю это:

dim someDouble as Double?

(Обратите внимание на знак вопроса). Если я не объявляю это так, проверка ошибок выдает мне сообщение "IsNot требует операндов, которые имеют ссылочные типы".

После объявления установите переменную на...

someDouble = Nothing

... кажется, устанавливает его на ноль, потому что он никогда не запускает код в моем операторе if / else, который проверяет, someDouble IsNot Nothing... что плохо, потому что переменная может законно хранить 0 как допустимый фрагмент данных.

Что мне здесь не хватает? Спасибо!

РЕДАКТИРОВАТЬ: я исключил, что я использовал свойства в классе, чтобы Get а также Set эти значения. Оказывается, я все делал правильно, кроме как я оставил свой PropertyТип как Double вместо Double? так что он был приведен к нулю вместо Nothing значение. Полезная информация еще в ответах ниже, правда!

2 ответа

Решение

Вы должны прочитать о Nullable Structure на MSDN

это объяснит, как его использовать

пример:

Sub Main()
    Dim someDouble As Double?

    someDouble = Nothing
    If someDouble.HasValue Then
        Console.WriteLine(someDouble.ToString)
    Else
        Console.WriteLine("someDouble is nothing / null")
    End If
    Console.Read()
End Sub

Хотя я не знаю, что вызывает ваши проблемы с "Nothing", вы также можете использовать "Double.NaN" (не число). Это также не потребовало бы специального "Double?" декларация.

Другие вопросы по тегам