布林運算子是控制流程、條件判斷的核心。C# 提供豐富的運算子:邏輯非(!)、關係(<, >, ==, !=)、條件邏輯(&&, ||),並具備短路求值特性。本文系統整理語法、行為與優先序。
!bool ready = true;
bool notReady = !ready; // false
| 運算子 | 意義 | 範例 (age=42) | 結果 |
|---|---|---|---|
< | 小於 | age < 21 | false |
<= | 小於等於 | age <= 18 | false |
> | 大於 | age > 16 | true |
>= | 大於等於 | age >= 30 | true |
| 運算子 | 意義 | 範例 | 結果 |
|---|---|---|---|
== | 等於 | age == 100 | false |
!= | 不等於 | age != 0 | true |
| 運算子 | 名稱 | 規則 |
|---|---|---|
&& | 條件 AND | 左側 false 則不評估右側 |
|| | 條件 OR | 左側 true 則不評估右側 |
bool valid = (percent >= 0) && (percent <= 100); // 短路:若 percent < 0,右側不執行
bool invalid = (percent < 0) || (percent > 100); // 短路:若 percent < 0,右側不執行
if (obj != null && obj.Method())。(), x.y, f(), a[i], ++, -- (後置)+, -, !, ~, ++, -- (前置)*, /, %+, -<, >, <=, >=, is, as==, !=&&||???:=, +=, -=...建議:複雜條件加上括號明確優先序,如 (a > 0) && (b < 10)。
if (x = 5) ❌ 指派而非比較,C# 編譯器會報錯(bool 無法隱含轉換)。percent >= 0 && <= 100 ❌ 右側缺少運算元,應寫 percent >= 0 && percent <= 100。&、|(邏輯 AND/OR,不短路)與 &&, ||。位元運算子用於整數位元操作或需完整評估兩側的布林邏輯。熟練掌握布林運算子、短路求值與優先序,是撰寫正確、高效條件判斷的基礎。善用短路特性可提升效能與安全性,但也要注意副作用邊界。建議在 Code Review 時檢查複雜條件是否加括號、是否正確使用短路邏輯。