繼資料型別與變數宣告後,本文系統整理 C# 運算子與控制流程陳述式兩大核心語法。內容包含運算子分類表、優先級與短路求值兩大陷阱、七種控制流程語法範例與解析,適合初學者建立紮實語法基礎,建議搭配參考書食用效果最佳。
C# 提供豐富運算子,常見分類如下:
| 分類 | 運算子範例 | 說明 |
|---|---|---|
| 算術 | + - * / % ++ -- | 數學運算,注意整數除法捨去小數 |
| 關係 | == != < > <= >= | 回傳 bool,勿寫成 = (指派) |
| 邏輯 | && || ! ^ | &&、|| 支援短路求值 |
| 位元 | & | ^ ~ << >> | 位元層級操作 |
| 指派 | = += -= *= /= %= | 複合指派簡化寫法 |
| 條件 | ?: ?? | 三元運算子、null 聯合運算子 |
| 其他 | typeof sizeof new () [] . ?. | 型別、記憶體、物件建立、存取 |
() 明確表達意圖,提升可讀性、避免錯誤運算元評估順序:執行運算前,先由左至右計算各運算元的值。
&& (條件 AND)、|| (條件 OR)、?: (條件)、?? (null 聯合) 支援短路。一旦結果已定,右側運算式不再執行。
int a = 1, b = 1;
bool c = ++a == 2 || ++b == 2;
// a=2 (++a 執行),b=1 (|| 左側為 true,右側短路,++b 不執行)
實務啟示:利用短路特性可寫出安全程式碼,如 obj != null && obj.Method() 避免 NullReferenceException。
if (a == 1)
{
b = 1;
}
else if (a == 2)
{
b = -1;
}
else
{
b = 0;
}
else if 可有多個或無;else 可省略== 寫成 =while (a < b)
{
a++;
}
do
{
a++;
} while (a < b);
;for (int i = 1; i <= 10; i++)
{
// 迴圈本體
}
foreach (char ch in strOrArray)
{
Console.WriteLine(ch);
}
in 右側須實作 IEnumerableforeach (char ch in str)
{
if (ch == 'm') continue; // 略過 'm'
Console.WriteLine(ch);
}
switch (a)
{
case 'a': b = 1; break;
case 'b': b = 2; break;
case 'c': b = 3; break;
default: b = 0; break;
}
casedefault 為無符合時的預設處理switch 中:跳出 switch 區塊foreach 取代 for 遍歷集合,體會差異運算子與控制流程是程式「會動」的關鍵。牢記優先級加括號、善用短路求值寫安全碼、根據已知/未知迴圈次數選擇 for/while/foreach,即能寫出正確且易讀的流程控制。下一步邁向方法設計,將重複邏輯封裝為可復用單元。