0

Null 値をチェックするために Linq to SQL オブジェクトにアクセスするときに、Value プロパティを呼び出さなければならないことがよくあります。そうしないと、例外が発生します。プリミティブ型をラップしているように見えるこれらのデータ型 (つまり、decimal?、bool? など) を誰か説明してもらえますか?

4

2 に答える 2

1

それらは type の Generics でありNullable<T>、プリミティブ型をラップします。

彼らはなぜ短い形式の int を発明したのですか? is Nullable は、C ベースの言語開発者が苦労している簡潔なものと簡潔なものの間の標準的な混乱に起因しているようです。

decimal? total = null;

total.HasValuefalse を返します。null 参照で爆発することはありません

ただし、total のプロパティが null であるtotal.Value.ToString();ため、例外がスローされます。Value

およびValueHasValue プロパティは読み取り専用です。

total = 10;

total.Value が 10.0 を返し、total.HasValue が true を返すことを意味します。

これは、特にデータベース型の非常に優れたジェネリックですが、それでも短い形式は得られません...

于 2012-08-29T22:21:48.473 に答える
1

decimal?は略記 (および同等)nullable<decimal>です。つまり、値をnull設定できることを意味します。bool?int?などにも同じことが当てはまります。

これらの値は、データベース フィールドで null 値が許可されている場合に、Linq 2 SQL によって選択されます。そうしないと、これらの値が であることを示す方法がありませんnull

于 2012-08-29T22:04:13.187 に答える