6

率直な質問: double の変数がいくつかあります。それらに「null」状態を保存できるようにしたいと思います。つまり、変数に有効なデータが含まれていないことを表すことができる必要があります。ブール値の「有効な」変数をすべての double に関連付けるのは本当に嫌です。これは醜く、不要になる可能性があります。

まず、「IsNothing」の概念をチェックできるようにするには、変数を別の方法で宣言する必要があることがわかったので、次のようにします。

dim someDouble as Double?

(疑問符に注意してください)。そのように宣言しないと、エラー チェックで「IsNot には参照型を持つオペランドが必要です」というメッセージが表示されます。

宣言したら、変数を次のように設定します...

someDouble = Nothing

...ゼロsomeDouble IsNot Nothingに設定しているようです。なぜなら、変数が有効なデータとして 0 を正当に格納できるため、これは悪いかどうかをチェックする if/else ステートメントでコードを実行しないからです。

ここで何が欠けていますか?ありがとう!

編集:クラスでプロパティを使用してGetこれらSetの値を使用していたことを省略しました。Propertyの型を aDoubleではなくa のままにしたことを除いて、私は正しいことをしていたことが判明したDouble?ため、値ではなくゼロにキャストバックしていましたNothing。ただし、以下の回答にはまだ有用な情報があります。

4

2 に答える 2

7

MSDNのNullable Structureを読む必要があります

これはそれを使用する方法を説明します

例:

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
于 2012-01-03T19:56:12.447 に答える
4

「Nothing」の問題の原因はわかりませんが、代わりに「Double.NaN」(数値ではない) を使用することもできます。これには、特別な「Double?」も必要ありません。宣言。

于 2012-01-03T19:58:12.160 に答える