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...elseif结构,可以指定多个条件:
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"
需要注意的重要一点是,如果在上面的示例中满足条件,则控件会跳过其他测试并跳至特定的ifelse构造的末尾。因此,如果您使用if..elseif构造,则测试的顺序很重要。
C#布尔表达式使用短路评估。在评估条件可能会有副作用的情况下,这一点很重要:
if (someBooleanMethodWithSideEffects() && someOtherBooleanMethodWithSideEffects()) { //... }
无法保证someOtherBooleanMethodWithSideEffects将实际运行。
在较早的条件下确保对以后的条件进行“安全”评估的情况下,这一点也很重要。例如:
if (someCollection != null &&someCollection.Count> 0) { //.. }
在这种情况下,顺序非常重要,因为如果我们颠倒顺序:
if (someCollection.Count > 0 && someCollection != null) {
它将抛出一个NullReferenceExceptionifsomeCollectionisnull。