Tip
本文屬於 基礎部分, 適合已經至少懂一種程式語言並正在學習 C# 的開發者。 如果你是程式新手,建議先從 入門 教學開始。 完整的語句語法,請參見 C# 語言規範中的 語句 。
來自另一種語言? 宣告、條件、迴圈和返回可能很熟悉。 C# 使用自身的語法與分類來處理這些功能,本文將介紹這些功能。
陳述句是一個完整的命令:「做這個。」程式中的語句組合成一個程式從頭到尾遵循的配方。 大多數語句是依序執行的。 分支選擇執行哪些步驟,迴圈則重複步驟。
這個範例宣告一個數量,顯示出來,然後用一個 if 陳述來決定是否要補貨:
int quantity = 5;
Console.WriteLine($"Quantity: {quantity}"); // => Quantity: 5
if (quantity < 10)
{
quantity = 10;
Console.WriteLine("Restocked"); // => Restocked
}
Console.WriteLine($"Quantity: {quantity}"); // => Quantity: 10
在看其部分之前,先把範例當作完整的指令來閱讀。 宣告、第一次呼叫 Console.WriteLine、整個 if 結構,以及最後一次呼叫 Console.WriteLine ,都是陳述。 陳述式內部 if 的區塊包含另外兩個陳述。
語句通常包含表達式
語句 通常包含表達式,這些是產生數值的程式碼片段。 在前述範例中,整個 if 構念是一個陳述。 其條件 quantity < 10 是一個會產生 true 或 false 其中之一的運算式。
宣告陳述式會引入一個本地變數或常數。 初始化器表達式可以提供其第一個值:
int quantity = 5;
完整行是宣告語句。 初始化器 5 是該陳述中的一個表達式。
賦值表達式將值儲存在變數、屬性、索引器或其他儲存位置。 C# 允許指派運算式構成運算式陳述式:
quantity = 10;
此陳述執行一個動作,而非僅計算一個值。 方法呼叫與遞增操作也是常見的表達式陳述:
Console.WriteLine("Restocking");
quantity++;
只有以下表達式形式能成為表達式陳述:
- 工作分派表達式
- 方法呼叫表達式
- 物件建立表達式
- 前綴或後綴的增減表達式
-
await表達式
不是每個表達都能獨立成為陳述。 例如,quantity + 1; 計算出一個值,但沒有使用它。 這不是一句有效的說法。
這裡有一個有用的工作定義:陳述大致像英文的完整句子,而 表達 式則像片語。 這種區分幫助你理解文件和規範中會遇到的形式術語與說明,雖然一般編碼很少需要你有意識地記住這個區分。
將陳述式分組成區塊
一個 區塊 將零個或多個大括號{ (和 })之間的陳述分組。 C# 將群組視為一個陳述。 在開頭的範例中,該 if 陳述句可以同時執行賦值與呼叫 Console.WriteLine ,因為區塊將它們分組為一個實體。 方塊可以巢狀放置在其他方塊內。
選擇語句與迭代語句稱其主體為 嵌入式語句。 這個主體可以是沒有大括號的一個陳述,也可以是將多個陳述分組的區塊。
即使正文只包含一個陳述,也偏好區塊。 大括號顯示哪些陳述屬於正文,並防止後續編輯誤將陳述置於正文外。
區塊定義可變範圍
在區塊中宣告的變數從宣告開始到該區塊結束,都是在作用域內。 巢狀區塊可以使用包覆區塊宣告的變數,但包圍區塊不能使用僅在巢狀區塊中宣告的變數:
int outerValue = 10;
if (outerValue > 0)
{
int innerValue = outerValue * 2;
Console.WriteLine(innerValue); // => 20
}
// innerValue isn't in scope here.
為任務選擇一個陳述
在你辨識出語句為指令後,你可以依用途從不同類型中選擇:
- 宣告資料:宣告陳述導入 本地變數與常數。
- 執行動作: 表達式陳述式用於指派值、呼叫方法、建立物件、遞增或遞減值,或等待非同步操作。
-
選擇步驟:選擇語句,如
if和switch,選擇執行的程式碼。 -
重複步驟:重複陳述句,如
foreach、while、for、 重複陳述或區塊。 -
轉移控制權:跳轉語句,如
break、continue、return和yield,將執行移至另一點。 -
處理異常:例外處理語句,如
try、catch和throw,會回應或回報錯誤。 -
資源管理: 該
using聲明 確保資源被處置。 -
使用專門行為:
checked與unchecked、fixed、 和lock陳述支持特定情境。