一般に、短絡or
オペレータ||
は、の右側を無視するか、左側がtrueと評価された場合を無視します。どうやら、これには例外が見つかりました。
以下をチェックしてください:
if (foo == null || bar != true ? foo.Count == 0 : true)
{
}
foo.Count
このコードは、がnullであるため、コマンドでnull参照例外をスローしfoo
ます。そして当然、ブール論理はこれを可能にします。ただし、がnullの場合、は短絡し、式の右辺を評価することすらできないfoo
と予想されますが、それでもそうなり、例外がスローされます。or
これは私のコードまたはC#コンパイラのバグですか?このケースを処理するC#仕様の一部はありますか?