それほど単純ではありません。C# 言語は、&& 演算子を使用して NAND ゲートをまったくモデル化しません。その演算子には短絡動作があり、C# プログラムでは非常に便利です。中括弧言語の一般的な動作として、次のような式はコードをクラッシュさせません。
arr[] = somefunction();
int ix = foo;
if (ix < arr.Length && arr[ix] == 42) {
EmailBookRecommendation();
}
しかし、これは式の非常に非効率的なバージョンであり、これははるかにパフォーマンスが高いです:
if (ix < arr.Length & arr [ix] == 42)
これは完全に正当な式であり、& 演算子はブール オペランドで問題なく機能します。しかし残念ながら、これはコードをクラッシュさせます。配列のインデックス式を評価し、それが Kaboom! になります。IndexOutOfRangeException で。
これは、NAND ゲートの問題ではありません。最初の入力が F の場合はクラッシュしません :) それが問題にならない C# 式は多数あります。あなたは本当に & 演算子を好むべきです。それは大きな違いを生みます。したがって、常に次のように記述します。
if (ix >= 1 & ix <= 42)
もちろん、これは決して失敗することはありません。&& 演算子が & 演算子よりもはるかに非効率的である理由を理解するには、分岐予測を理解する必要があります。それはこの回答で非常によくカバーされています。