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
。