Null 値をチェックするために Linq to SQL オブジェクトにアクセスするときに、Value プロパティを呼び出さなければならないことがよくあります。そうしないと、例外が発生します。プリミティブ型をラップしているように見えるこれらのデータ型 (つまり、decimal?、bool? など) を誰か説明してもらえますか?
2 に答える
それらは type の Generics でありNullable<T>
、プリミティブ型をラップします。
彼らはなぜ短い形式の int を発明したのですか? is Nullable は、C ベースの言語開発者が苦労している簡潔なものと簡潔なものの間の標準的な混乱に起因しているようです。
decimal? total = null;
total.HasValue
false を返します。null 参照で爆発することはありません
ただし、total のプロパティが null であるtotal.Value.ToString();
ため、例外がスローされます。Value
およびValue
HasValue プロパティは読み取り専用です。
total = 10;
total.Value が 10.0 を返し、total.HasValue が true を返すことを意味します。
これは、特にデータベース型の非常に優れたジェネリックですが、それでも短い形式は得られません...
decimal?
は略記 (および同等)nullable<decimal>
です。つまり、値をnull
設定できることを意味します。bool?
、int?
などにも同じことが当てはまります。
これらの値は、データベース フィールドで null 値が許可されている場合に、Linq 2 SQL によって選択されます。そうしないと、これらの値が であることを示す方法がありませんnull
。