C# if, if...else, if... else 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条款,将在案件条件的计算结果来执行错误:

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

它将抛出一个NullReferenceExceptionif someCollectionis null。