プロジェクトに取り組んでいると、コーダーはチェックでこれを頻繁に行います。まず、nullable にint
値があるかどうかをチェックし、次にそれが 0 より大きいかどうかをチェックします。なぜでしょうか。1 回のチェック (0 より大きいかどうか) で十分なのに、なぜ 2 回のチェックを行うのでしょうか。null は 0 より大きくないので、それは冗長ではないでしょうか。
ベストアンサー1
コードはおそらく冗長です。
もし私がint?
そうなら:
if (i.HasValue && i.Value > 0)
は以下と同等です:
if (i > 0)
からマイクロソフト:
null 許容型の比較を実行する場合、null 許容型の一方の値が null で、もう一方が null でない場合、!= (等しくない) を除くすべての比較は false と評価されます。特定の比較が false を返したからといって、反対のケースが true を返すとは想定しないことが重要です。次の例では、10 は null より大きくも小さくも等しくもありません。num1 != num2 のみが true と評価されます。