2012-01-03 1 views
5

わかりやすい質問:私はダブルスのあるいくつかの変数を持っています。私は彼らに「ヌル」の状態を保存できるようにしたいと思い、すなわち、私は変数が有効なデータが含まれていないことを表すことができるようにする必要があります。私は本当に論理的な "有効な"変数をすべての単一の二倍に関連付けるのではなく、むしろ不必要と思われるでしょう。VB.Net 2010のdouble型でnull値を使用するにはどうすればよいですか?

まず、私は1つが「IsNothing」の概念を確認することができるように、異なる変数を宣言していることが分かったので、私はこれを行う:

dim someDouble as Double? 

(クエスチョンマークに注意してください)。私がそういうことを宣言しなければ、エラーチェックは "IsNotには参照型を持つオペランドが必要です"というメッセージが表示されます。一度...変数へ...

someDouble = Nothing 

を設定し、宣言

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

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

EDIT:これらの値をGetSetにクラスでプロパティを使用していました。それは私が私がDoubleの代わりに、それが戻って代わりNothing値のゼロにキャスティングされたDouble?としての私のPropertyの型を左右以外の事をやっていたが判明しました。しかし、以下の回答にはまだ役立つ情報があります。

答えて

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 
+0

@BalaRは、はい、それは – Fredou

+0

なるほどで​​す、これは私がアップgoofedと入力し、私*プロパティ*を変更するのを忘れ除いて、私はもう...何をしていたか、本質的には「二重の?」 'Double'から 'Set'を実行するときに標準の 'Double'にキャストしていました。アー!リンクありがとう! – evilspoons

4

私は「何も」であなたの問題を引き起こしているのか分からないものの代わりに「Double.NaN」(数字ではない)を使用することもできます。これには特別な「ダブル」は必要ありません。宣言。

+0

素晴らしいアイデア!私はNothing(null)の代わりにこれを試してみると思います。 Fredouの答えがNothingとうまくいかなかった理由についての私のコメントを参照してください。 – evilspoons

関連する問題