邏輯運算子對照表
| 運算子 | 名稱 | 語法 | 短路 | 位元對應 |
&& | 邏輯 AND | A && B | 是 | & |
|| | 邏輯 OR | A || B | 是 | | |
! | 邏輯 NOT | !A | - | ~ (位元補數) |
^ | 邏輯 XOR | A ^ B | 否 | ^ |
短路求值機制
// &&: 左運算元為 false 直接回傳 false,不評估右側
bool result = false && ExpensiveMethod(); // ExpensiveMethod() 不會被呼叫
// ||: 左運算元為 true 直接回傳 true
bool result = true || ExpensiveMethod(); // ExpensiveMethod() 不會被呼叫
// 實務防禦性程式碼
if (user != null && user.IsActive) { ... } // 避免 NullReferenceException
if (list != null && list.Count > 0) { ... }
真值表
| A | B | A && B | A || B | A ^ B | !A |
| F | F | F | F | F | T |
| F | T | F | T | T | T |
| T | F | F | T | T | F |
| T | T | T | T | F | F |
位元邏輯運算子 (&、|、^、~)
- 不短路:兩側運算元皆會評估
- 適用於旗標操作、位元遮罩、效能關鍵路徑
flags & Mask 檢查旗標、flags | Mask 設定、flags ^ Mask 切換、flags & ~Mask 清除
De Morgan 定律與條件簡化
!(A && B) ≡ !A || !B
!(A || B) ≡ !A && !B
// 實務簡化範例
if (!(user == null || !user.IsActive))
// 簡化為
if (user != null && user.IsActive)
C# 9+ 模式比對中的邏輯模式
// and / or / not 模式
if (input is not null and (>= 0 and <= 100)) { ... }
switch (value) {
case > 0 and < 10: ...
case < 0 or > 100: ...
case not 0: ...
}
實務最佳實務
- 預設使用
&& || 享受短路保護
- 旗標枚舉標記
[Flags] 搭配位元運算
- 複雜條件提取為具名方法/屬性:
if (user.CanAccess(resource))
- 避免在短路運算子右側放置有副作用的呼叫 (除非刻意)
- 單元測試覆蓋所有分支組合 (MC/DC 準則)



本文對應《叩響 C# 之門》第 4.3.2 節邏輯運算子教學內容