C#コードでは、変数にアクセスする前に、変数がnullであるかどうかをすでにテストしています。
if (myInt.HasValue) {
var yourInt = myInt;
// do something with yourInt
}
私の質問:null許容プロパティをテストした後ではないかのように使用することと、次のプロパティを使用することには違いがありますか?
if (myInt.HasValue) {
var yourInt = myInt.Value; // see the difference?
// do something with yourInt
}
.Value
これは単なる好みの問題ですか、それともnull許容オブジェクトがそのテストに合格した後でも使用する明確な理由またはパフォーマンスへの影響がありますか?
アップデート
2番目の例を拡張しました。すでにでテストしていますHasValue
が、そこで.Value
値にアクセスするために使用します。
更新2
sを使用するように例を更新しました。var
これは、コードでは実際にはint
型を使用していないためです。悪い例については申し訳ありません。このコードでは、実際にはNHibernateCriteriaクエリ内のオブジェクト(query)を使用していExpression.Eq("thing", myInt)
ます。
これはコンパイルエラーをスローしません。NHibernateを関与させずに、例を単純化して質問の根本に到達しようとしていました。これにより一部の回答が無効になった場合は申し訳ありません。を明示的に呼び出すのではなく、別のメソッドに値を検索させる場合に、パフォーマンスに影響があるかどうかを確認しようとしていました.Value
。