私は定期的にnullになるDateTime列を持つSQL Serverデータベースに対して作業しています。 LINQ to SQLを使用して、WinForms(VB.NET)プログラムをデータに接続しています。VB.NET - HasValue = FalseでNullable(Of T)を作成する
私はいくつかのLINQオブジェクトを拡張し、いくつかのプロパティを追加しました(Nullable(Of DateTime)
)。基本的に、私は特定の価値が存在するかどうかを計算しています。値はDateTime
です。存在しない場合はHasValue
プロパティがFalse
に設定されたNullable(Of DateTime)
オブジェクト(構造体など)を作成します。
私はいくつかの研究を行いました。明らかに、Nullable(Of T)
のNewコンストラクタはHasValue
をTrueに設定して作成します。
つの質問:
- これはなぜですか?
Nullable(Of T)
構造体がこの種の状況に特化して作成されているため、デフォルトの動作はHasValue
=True
となるのはなぜですか? Nullable(Of T)
を実際にnull
に初期化するにはどうすればよいですか?
ありがとう!
あなたは、これが正しいことを確認しています:あなたが持っている価値を持つのNullable(T)、およびその値を削除したい場合は、それが参照型であるかのように、あなただけの、Nothingにそれを設定したいですか?私は '' Dim x as New Nullable(Of DateTime) 'を使用しようとしていて、 'HasValue = True'と' Value =' 1/1/0001 00:00 'のオブジェクトを戻していたということはほぼ肯定的です。私は間違っていますか? – mbm29414
サンプルコードにDebug.Assertを置く理由があります。このコードを実行し、HasValueが本当にfalseであることをAssertsで保証します;-) –