if if else if if else if if
if
語句用於控制程式的流程。if
語句根據 Boolean
表示式的值標識要執行的語句。
對於單個語句,braces
{}是可選的,但建議使用。
int a = 4;
if(a % 2 == 0)
{
Console.WriteLine("a contains an even number");
}
// output: "a contains an even number"
if
也可以有一個 else
子句,在條件計算結果為 false 時執行:
int a = 5;
if(a % 2 == 0)
{
Console.WriteLine("a contains an even number");
}
else
{
Console.WriteLine("a contains an odd number");
}
// output: "a contains an odd number"
if
… else if
構造允許你指定多個條件:
int a = 9;
if(a % 2 == 0)
{
Console.WriteLine("a contains an even number");
}
else if(a % 3 == 0)
{
Console.WriteLine("a contains an odd number that is a multiple of 3");
}
else
{
Console.WriteLine("a contains an odd number");
}
// output: "a contains an odd number that is a multiple of 3"
重要的是要注意,如果在上面的示例中滿足條件,控制元件將跳過其他測試並跳轉到該特定 if else 結構的末尾。因此,如果使用 if,則測試順序很重要.. else if 構造
C#布林表示式使用短路評估 。在評估條件可能有副作用的情況下,這很重要:
if (someBooleanMethodWithSideEffects() && someOtherBooleanMethodWithSideEffects()) {
//...
}
無法保證 someOtherBooleanMethodWithSideEffects
實際上會執行。
在早期條件確保評估以後條件安全的情況下,這也很重要。例如:
if (someCollection != null && someCollection.Count > 0) {
// ..
}
在這種情況下,訂單非常重要,因為如果我們顛倒訂單:
if (someCollection.Count > 0 && someCollection != null) {
如果 someCollection
是 null
,它會丟擲一個 NullReferenceException
。