一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

    C# 中 if 语句的语法:

    如果布尔表达式为 ,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

    实例

    1. using System;
    2. namespace DecisionMaking
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. /* 局部变量定义 */
    9. int a = 10;
    10. /* 使用 if 语句检查布尔条件 */
    11. if (a < 20)
    12. {
    13. /* 如果条件为真,则输出下面的语句 */
    14. Console.WriteLine("a 小于 20");
    15. }
    16. Console.WriteLine("a 的值是 {0}", a);
    17. Console.ReadLine();
    18. }
    19. }
    20. }

    当上面的代码被编译和执行时,它会产生下列结果:

    1. a 小于 20
    2. a 的值是 10

    二、if…else 语句

    一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

    C# 中 if…else 语句的语法:

    1. if(boolean_expression)
    2. {
    3. /* 如果布尔表达式为真将执行的语句 */
    4. }
    5. else
    6. {
    7. /* 如果布尔表达式为假将执行的语句 */
    8. }

    如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。

    实例

    1. using System;
    2. namespace DecisionMaking
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. /* 局部变量定义 */
    9. int a = 100;
    10. /* 检查布尔条件 */
    11. if (a < 20)
    12. {
    13. /* 如果条件为真,则输出下面的语句 */
    14. Console.WriteLine("a 小于 20");
    15. }
    16. else
    17. {
    18. /* 如果条件为假,则输出下面的语句 */
    19. Console.WriteLine("a 大于 20");
    20. }
    21. Console.WriteLine("a 的值是 {0}", a);
    22. Console.ReadLine();
    23. }
    24. }
    25. }

    当上面的代码被编译和执行时,它会产生下列结果:

    1. a 大于 20
    2. a 的值是 100

    一个 if 语句后可跟一个可选的 else if…else 语句,这可用于测试多种条件。

    当使用 if…else if…else 语句时,以下几点需要注意:

    1. if(boolean_expression 1)
    2. {
    3. /* 当布尔表达式 1 为真时执行 */
    4. }
    5. else if( boolean_expression 2)
    6. {
    7. /* 当布尔表达式 2 为真时执行 */
    8. }
    9. else if( boolean_expression 3)
    10. {
    11. /* 当布尔表达式 3 为真时执行 */
    12. }
    13. else
    14. {
    15. /* 当上面条件都不为真时执行 */
    16. }

    实例

    1. using System;
    2. {
    3. class Program
    4. {
    5. static void Main(string[] args)
    6. {
    7. /* 局部变量定义 */
    8. int a = 100;
    9. /* 检查布尔条件 */
    10. if (a == 10)
    11. {
    12. /* 如果 if 条件为真,则输出下面的语句 */
    13. Console.WriteLine("a 的值是 10");
    14. else if (a == 20)
    15. {
    16. /* 如果 else if 条件为真,则输出下面的语句 */
    17. Console.WriteLine("a 的值是 20");
    18. }
    19. else if (a == 30)
    20. {
    21. /* 如果 else if 条件为真,则输出下面的语句 */
    22. Console.WriteLine("a 的值是 30");
    23. }
    24. else
    25. {
    26. /* 如果上面条件都不为真,则输出下面的语句 */
    27. Console.WriteLine("没有匹配的值");
    28. }
    29. Console.WriteLine("a 的准确值是 {0}", a);
    30. Console.ReadLine();
    31. }
    32. }
    33. }

    当上面的代码被编译和执行时,它会产生下列结果:

    1. 没有匹配的值
    2. a 的准确值是 100

    四、嵌套if语句

    在 C# 中,嵌套 if-else 语句是合法的,这意味着您可以在一个 ifelse if 语句内使用另一个 ifelse if 语句。

    C# 中 嵌套 if 语句的语法:

    1. if( boolean_expression 1)
    2. {
    3. /* 当布尔表达式 1 为真时执行 */
    4. if(boolean_expression 2)
    5. {
    6. /* 当布尔表达式 2 为真时执行 */
    7. }
    8. }

    您可以嵌套 else if…else,方式与嵌套 if 语句相似。

    实例

    1. using System;
    2. namespace DecisionMaking
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. //* 局部变量定义 */
    9. int a = 100;
    10. int b = 200;
    11. /* 检查布尔条件 */
    12. if (a == 100)
    13. {
    14. /* 如果条件为真,则检查下面的条件 */
    15. if (b == 200)
    16. {
    17. /* 如果条件为真,则输出下面的语句 */
    18. Console.WriteLine("a 的值是 100,且 b 的值是 200");
    19. }
    20. }
    21. Console.WriteLine("a 的准确值是 {0}", a);
    22. Console.WriteLine("b 的准确值是 {0}", b);
    23. Console.ReadLine();
    24. }
    25. }
    26. }

    当上面的代码被编译和执行时,它会产生下列结果:

    一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

    C# 中 switch 语句的语法:

    1. switch(expression){
    2. case constant-expression :
    3. statement(s);
    4. break;
    5. case constant-expression :
    6. statement(s);
    7. break;
    8. /* 您可以有任意数量的 case 语句 */
    9. default : /* 可选的 */
    10. statement(s);
    11. break;
    12. }

    switch 语句必须遵循下面的规则:

    • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

    • caseconstant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。

    • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

    • 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

    • C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。

    • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

    • C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-casegoto default

    实例

    1. using System;
    2. namespace DecisionMaking
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. /* 局部变量定义 */
    9. char grade = 'B';
    10. switch (grade)
    11. {
    12. case 'A':
    13. Console.WriteLine("很棒!");
    14. break;
    15. case 'B':
    16. case 'C':
    17. Console.WriteLine("做得好");
    18. break;
    19. case 'D':
    20. Console.WriteLine("您通过了");
    21. break;
    22. case 'F':
    23. Console.WriteLine("最好再试一下");
    24. break;
    25. default:
    26. Console.WriteLine("无效的成绩");
    27. break;
    28. }
    29. Console.WriteLine("您的成绩是 {0}", grade);
    30. Console.ReadLine();
    31. }
    32. }
    33. }

    当上面的代码被编译和执行时,它会产生下列结果:

    1. 做得好
    2. 您的成绩是 B

    六、嵌套 switch 语句

    您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switchcase 常量包含共同的值,也没有矛盾。

    C# 中 嵌套 switch 语句的语法:

    1. switch(ch1)
    2. {
    3. case 'A':
    4. printf("这个 A 是外部 switch 的一部分" );
    5. switch(ch2)
    6. {
    7. case 'A':
    8. printf("这个 A 是内部 switch 的一部分" );
    9. break;
    10. case 'B': /* 内部 B case 代码 */
    11. }
    12. break;
    13. case 'B': /* 外部 B case 代码 */
    14. }

    实例

    1. using System;
    2. namespace DecisionMaking
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. int a = 100;
    9. int b = 200;
    10. switch (a)
    11. {
    12. case 100:
    13. Console.WriteLine("这是外部 switch 的一部分");
    14. switch (b)
    15. {
    16. case 200:
    17. Console.WriteLine("这是内部 switch 的一部分");
    18. break;
    19. }
    20. break;
    21. }
    22. Console.WriteLine("a 的准确值是 {0}", a);
    23. Console.WriteLine("b 的准确值是 {0}", b);
    24. Console.ReadLine();
    25. }
    26. }

    当上面的代码被编译和执行时,它会产生下列结果:

    我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if…else 语句。它的一般形式如下:

    1. Exp1 ? Exp2 : Exp3;

    其中,Exp1Exp2Exp3 是表达式。请注意,冒号的使用和位置。

    ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

    🔚