Как использовать нулевое значение в 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?" декларация.