首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 基礎入門:布爾運算符、關係運算符與邏輯運算符完整指南

     編輯:關於C#

布爾運算符概覽

布爾運算符求值結果為 `true` 或 `false`,是控制流程 (if/while/for) 的核心。C# 提供以下類別:

  • 邏輯非 (NOT):`!`
  • 相等/不等:`==` / `!=`
  • 關係運算符:`<` / `<=` / `>` / `>=`
  • 條件邏輯與/或:`&&` / `||` (短路求值)
  • 位邏輯與/或/異或:`&` / `|` / `^` (非短路,可用於 bool)

1. 邏輯非 `!`

取反布爾值:

bool ready = true;
bool notReady = !ready; // false
// 等價於
bool notReady2 = (ready == false);

2. 相等 `==` 與不等 `!=`

比較**同類型**兩值是否相等:

運算符含義示例 (age=42)結果
==等於age == 100false
!=不等於age != 0true
⚠️ **陷阱**:`==` (比較) vs `=` (賦值)。`if (x = 5)` 編譯錯誤 (C# 要求條件為 bool),但 `if (x == 5)` 正確。

3. 關係運算符

比較大小關係 (數值類型/實現 `IComparable`):

運算符含義示例 (age=42)結果
<小於age < 21false
<=小於等於age <= 18false
>大於age > 16true
>=大於等於age >= 30true

4. 條件邏輯運算符:`&&` (與) / `||` (或)

**短路求值** 是核心特性:

  • `&&`:左操作數為 `false` → **直接返回 false**,不計算右側。
  • `||`:左操作數為 `true` → **直接返回 true**,不計算右側。

語法與示例

// && 範例:百分比在 0-100 之間
bool valid = (percent >= 0) && (percent <= 100);

// || 範例:百分比超出範圍
bool invalid = (percent < 0) || (percent > 100);

短路求值實戰價值

// 避免空引用異常 (經典模式)
if (user != null && user.IsActive) { ... }
// user 為 null 時,短路不訪問 user.IsActive

// 性能優化:將廉價/快速判斷放左側
if (FastCheck() && ExpensiveCheck()) { ... }
// FastCheck 為 false 時跳過昂貴操作

常見新手錯誤

// ❌ 錯誤:關係運算符鏈接 (數學寫法無效)
if (0 <= percent <= 100) // 編譯錯誤:bool 不能與 int 比較

// ✅ 正確:拆分為兩個關係表達式用 && 連接
if (percent >= 0 && percent <= 100)

// ❌ 錯誤:變量重複省略
if (percent >= 0 && <= 100) // 編譯錯誤

// ✅ 正確:完整表達式
if (percent >= 0 && percent <= 100)

// 推薦:加括號提升可讀性 (雖優先級已正確)
if ((percent >= 0) && (percent <= 100))

5. 位邏輯運算符 (用於 bool):`&` / `|` / `^`

**非短路**,總是計算兩側:

運算符名稱真值表 (A op B)
&邏輯與僅雙真為真
|邏輯或至少一真為真
^邏輯異或一真一假為真
bool a = true, b = false;
Console.WriteLine(a & b);  // false (計算兩側)
Console.WriteLine(a && b); // false (短路,b 不計算)
Console.WriteLine(a | b);  // true
Console.WriteLine(a ^ b);  // true
💡 **用途**:罕見。需**強制執行兩側有副作用的方法**時:`if (MethodA() & MethodB())` 確保兩者均執行。日常**首選 `&&`/`||`**。

運算符優先級與結合性總結 (高→低)

類別運算符結合性
主要`()` `++` `--` (後綴)左
一元`!` `+` `-` `++` `--` (前綴)右
乘法`*` `/` `%`左
加法`+` `-`左
關係`<` `<=` `>` `>=`左
相等`==` `!=`左
條件與`&&`左
條件或`||`左
賦值`=` `+=` `-=` `*=` `/=` `%=`右

💡 **口訣**:一元 > 算術 > 關係 > 相等 > 邏輯與 > 邏輯或 > 賦值。括號 `()` 可隨時提升優先級、消除歧義。

最佳實踐清單

  • ✅ 條件判斷**首選 `&&`/`||`** (短路、性能、防空引用)。
  • ✅ 複雜條件**加括號**分組,寧冗餘勿歧義。
  • ✅ 廉價判斷前置 (如 `null` 檢查、範圍快檢)。
  • ✅ 避免 `&`/`|` 用於 bool,除非明確需要副作用雙執行。
  • ✅ 區間判斷寫成 `min <= x && x <= max`,而非 `x >= min & x <= max`。
  • ✅ 利用編譯器警告 (CS0665: `=` 用於條件) 防止賦值誤寫為比較。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved