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"

ifelse 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) {

如果 someCollectionnull,它会抛出一个 NullReferenceException