原文: https://www.programiz.com/csharp-programming/if-else-statement

在本文中,我们将学习如何使用 C# 中的ifif...elseif...else if语句来控制程序执行的流程。

在编程中不可避免地要测试条件。 我们经常会遇到需要测试条件(无论是true还是false)来控制程序流程的情况。 这些条件可能会受到用户输入,时间因素,程序正在运行的当前环境等的影响。

在本文中,我们将学习在 C# 中使用if语句测试条件。


C# if语句

如果给定条件为真,则 C# if-then语句将执行代码块。 C# 中if-then语句的语法为:

  1. if (boolean-expression)
  2. {
  3. // statements executed if boolean-expression is true
  4. }
  • 布尔表达式将返回truefalse
  • 如果boolean-expression返回true,则将执行if(在{...}内部)内的语句。
  • 如果boolean-expression返回false,则if体内的语句将被忽略。

例如,

  1. if (number < 5)
  2. {
  3. number += 5;
  4. }

在此示例中,语句

  1. number += 5;

仅当number的值小于 5 时才会执行。

还记得+=运算符吗?

if语句如何工作?

C# `if`,`if...else`,`if...else if`和嵌套`if`语句 - 图1

示例 1:C# if语句

  1. using System;
  2. namespace Conditional
  3. {
  4. class IfStatement
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 2;
  9. if (number < 5)
  10. {
  11. Console.WriteLine("{0} is less than 5", number);
  12. }
  13. Console.WriteLine("This statement is always executed.");
  14. }
  15. }
  16. }

当我们运行程序时,输出将是:

  1. 2 is less than 5
  2. This statement is always executed.

number的值被初始化为 2。因此,表达式number < 5的计算结果为true。 因此,将执行if块内部的代码。if语句之后的代码将始终与表达式无关地执行。

现在,将number的值更改为大于5的值,例如10。 当我们运行程序时,输出将是:

  1. This statement is always executed.

表达式number < 5将返回false,因此if块中的代码将不会执行。


C# if...else语句

C# 中的if语句可能具有可选的else语句。 如果将表达式计算为false,则将执行else语句中的代码块。

C# 中if...else语句的语法为:

  1. if (boolean-expression)
  2. {
  3. // statements executed if boolean-expression is true
  4. }
  5. else
  6. {
  7. // statements executed if boolean-expression is false
  8. }

For example,

  1. if (number < 5)
  2. {
  3. number += 5;
  4. }
  5. else
  6. {
  7. number -= 5;
  8. }

In this example, the statement

  1. number += 5;

仅当number的值小于5时,才会执行。

该声明

  1. number -= 5;

如果number的值大于或等于5,将执行。

if...else语句如何工作?

C# `if`,`if...else`,`if...else if`和嵌套`if`语句 - 图2

示例 2:C# if...else语句

  1. using System;
  2. namespace Conditional
  3. {
  4. class IfElseStatement
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 12;
  9. if (number < 5)
  10. {
  11. Console.WriteLine("{0} is less than 5", number);
  12. }
  13. else
  14. {
  15. Console.WriteLine("{0} is greater than or equal to 5", number);
  16. }
  17. Console.WriteLine("This statement is always executed.");
  18. }
  19. }
  20. }

当我们运行程序时,输出将是:

  1. 12 is greater than or equal to 5
  2. This statement is always executed.

在此,将number的值初始化为12。 因此,表达式number < 5被求值为false。 因此,执行else块内的代码。if..else语句之后的代码将始终与表达式无关地执行。

现在,将number的值更改为小于5的值,例如2。 当我们运行程序时,输出将是:

  1. 2 is less than 5
  2. This statement is always executed.

表达式number < 5将返回true,因此if块中的代码将被执行。

C# 中的三元运算符if...else语句提供 C# 的快捷方式。


C# if...else if语句

当我们只有一个条件要测试时,if-thenif-then-else语句可以正常工作。 但是,如果我们有多个条件来测试和执行众多代码块之一,该怎么办?

对于这种情况,我们可以在 C# 中使用if..else if语句。if...else if语句的语法是:

  1. if (boolean-expression-1)
  2. {
  3. // statements executed if boolean-expression-1 is true
  4. }
  5. else if (boolean-expression-2)
  6. {
  7. // statements executed if boolean-expression-2 is true
  8. }
  9. else if (boolean-expression-3)
  10. {
  11. // statements executed if boolean-expression-3 is true
  12. }
  13. .
  14. .
  15. .
  16. else
  17. {
  18. // statements executed if all above expressions are false
  19. }

if...else if语句从顶部底部执行。 一旦测试表达式为true,就会执行if(或者else if)块内部的代码。 然后控件跳出if...else if块。

如果表达式都不是true,则执行else块内的代码。

或者,我们可以在这种情况下使用switch语句

示例 3:C# if...else if语句

  1. using System;
  2. namespace Conditional
  3. {
  4. class IfElseIfStatement
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 12;
  9. if (number < 5)
  10. {
  11. Console.WriteLine("{0} is less than 5", number);
  12. }
  13. else if (number > 5)
  14. {
  15. Console.WriteLine("{0} is greater than 5", number);
  16. }
  17. else
  18. {
  19. Console.WriteLine("{0} is equal to 5");
  20. }
  21. }
  22. }
  23. }

当我们运行程序时,输出将是:

  1. 12 is greater than 5

number的值初始化为12。 第一个测试表达式number < 5false,因此控件将移至else if块。 测试表达式number > 5true,因此将执行else内部的代码块。

同样,我们可以更改number的值以更改执行流程。


嵌套if...else语句

一个if...else语句可以存在于另一个if...else语句中。 此类语句称为嵌套if...else语句。

嵌套if...else语句的一般结构为:

  1. if (boolean-expression)
  2. {
  3. if (nested-expression-1)
  4. {
  5. // code to be executed
  6. }
  7. else
  8. {
  9. // code to be executed
  10. }
  11. }
  12. else
  13. {
  14. if (nested-expression-2)
  15. {
  16. // code to be executed
  17. }
  18. else
  19. {
  20. // code to be executed
  21. }
  22. }

当我们必须先测试一个条件然后再测试另一个条件时,通常会使用嵌套的if语句。 在嵌套的if语句中,如果外部if语句返回true,它将进入主体以检查内部if语句。

示例 4:嵌套if...else语句

以下程序使用嵌套的if...else语句计算 3 个数字中的最大数字。

  1. using System;
  2. namespace Conditional
  3. {
  4. class Nested
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int first = 7, second = -23, third = 13;
  9. if (first > second)
  10. {
  11. if (firstNumber > third)
  12. {
  13. Console.WriteLine("{0} is the largest", first);
  14. }
  15. else
  16. {
  17. Console.WriteLine("{0} is the largest", third);
  18. }
  19. }
  20. else
  21. {
  22. if (second > third)
  23. {
  24. Console.WriteLine("{0} is the largest", second);
  25. }
  26. else
  27. {
  28. Console.WriteLine("{0} is the largest", third);
  29. }
  30. }
  31. }
  32. }
  33. }

当我们运行程序时,输出将是:

13 is the largest