在编程中测试条件是不可避免的。我们经常会遇到需要测试条件(无论其结果是true
还是false
)来控制程序流程的情况。这些条件可能会受到用户输入、时间因素、程序运行的当前环境等的影响。
在本文中,我们将学习如何在 C# 中使用 if 语句来测试条件。
C# if(if-then)语句
C# if-then 语句将在给定条件为 true 时执行一段代码。C# 中 if-then 语句的语法是:
if (boolean-expression) { // statements executed if boolean-expression is true }
- boolean-expression 将返回
true
或false
。 - 如果 boolean-expression 返回
true
,则 if 块中的语句(在{...}
内)将被执行。 - 如果 boolean-expression 返回
false
,则 if 块中的语句将被忽略。
例如,
if (number < 5) { number += 5; }
在此示例中,语句
number += 5;
只有在 number 的值小于 5 时才会被执行。
还记得 += 运算符吗?
if 语句如何工作?

示例 1:C# if 语句
using System;
namespace Conditional
{
class IfStatement
{
public static void Main(string[] args)
{
int number = 2;
if (number < 5)
{
Console.WriteLine("{0} is less than 5", number);
}
Console.WriteLine("This statement is always executed.");
}
}
}
当我们运行程序时,输出将是:
2 is less than 5 This statement is always executed.
number 的值被初始化为 2。因此,表达式 number < 5
被评估为 true
。因此,if 块内的代码将被执行。if 语句之后的代码总是会被执行,而不管该表达式的结果如何。
现在,将 number 的值更改为大于 5
的值,例如 10
。当我们运行程序时,输出将是:
This statement is always executed.
表达式 number < 5
将返回 false
,因此 if 块内的代码将不会被执行。
C# if...else(if-then-else)语句
C# 中的 if 语句可以有一个可选的 else 语句。如果表达式被评估为false
,则 else 语句内的代码块将被执行。
C# 中 if...else 语句的语法是:
if (boolean-expression) { // statements executed if boolean-expression is true } else { // statements executed if boolean-expression is false }
例如,
if (number < 5) { number += 5; } else { number -= 5; }
在此示例中,语句
number += 5;
只有当 number 的值小于 5
时,才会执行。
语句
number -= 5;
如果 number 的值大于或等于 5
,则会执行。
if...else 语句如何工作?

示例 2:C# if...else 语句
using System;
namespace Conditional
{
class IfElseStatement
{
public static void Main(string[] args)
{
int number = 12;
if (number < 5)
{
Console.WriteLine("{0} is less than 5", number);
}
else
{
Console.WriteLine("{0} is greater than or equal to 5", number);
}
Console.WriteLine("This statement is always executed.");
}
}
}
当我们运行程序时,输出将是:
12 is greater than or equal to 5 This statement is always executed.
这里,number 的值被初始化为 12
。因此,表达式 number < 5
被评估为 false
。因此,else 块内的代码将被执行。if..else 语句之后的代码总是会被执行,而不管表达式的结果如何。
现在,将 number 的值更改为小于 5
的值,例如 2
。当我们运行程序时,输出将是:
2 is less than 5 This statement is always executed.
表达式 number < 5
将返回 true,因此 if 块内的代码将被执行。
C# 中的三元运算符为 C# if...else 语句提供了一种快捷方式。
C# if...else if(if-then-else if)语句
当我们只有一个条件需要测试时,if-then 和 if-then-else 语句效果很好。但是,如果我们有多个条件需要测试并执行多个代码块中的一个呢?
在这种情况下,我们可以在 C# 中使用 if..else if 语句。if...else if 语句的语法是:
if (boolean-expression-1) { // statements executed if boolean-expression-1 is true } else if (boolean-expression-2) { // statements executed if boolean-expression-2 is true } else if (boolean-expression-3) { // statements executed if boolean-expression-3 is true } . . . else { // statements executed if all above expressions are false }
if...else if 语句是从顶部到底部执行的。一旦测试表达式为true
,该 if(或 else if)块内的代码就会被执行。然后控制会跳出 if...else if 块。
如果所有表达式都为false
,则 else 块内的代码将被执行。
或者,在这种情况下,我们也可以使用 switch 语句。
示例 3:C# if...else if 语句
using System;
namespace Conditional
{
class IfElseIfStatement
{
public static void Main(string[] args)
{
int number = 12;
if (number < 5)
{
Console.WriteLine("{0} is less than 5", number);
}
else if (number > 5)
{
Console.WriteLine("{0} is greater than 5", number);
}
else
{
Console.WriteLine("{0} is equal to 5");
}
}
}
}
当我们运行程序时,输出将是:
12 is greater than 5
number 的值被初始化为 12
。第一个测试表达式 number < 5
为 false
,因此控制将移至 else if 块。测试表达式 number > 5
为 true
,因此 else if 内的代码块将被执行。
同样,我们可以更改 number
的值来改变执行流程。
嵌套 if...else 语句
一个 if...else 语句可以包含在另一个 if...else 语句中。这样的语句称为嵌套 if...else 语句。
嵌套 if…else 语句的通用结构是:
if (boolean-expression) { if (nested-expression-1) { // code to be executed } else { // code to be executed } } else { if (nested-expression-2) { // code to be executed } else { // code to be executed } }
嵌套 if 语句通常用于我们必须先测试一个条件,然后是另一个条件的情况。在嵌套 if 语句中,如果外部 if 语句返回 true,它会进入其主体以检查内部 if 语句。
示例 4:嵌套 if...else 语句
以下程序使用嵌套 if...else 语句计算 3 个数字中的最大值。
using System;
namespace Conditional
{
class Nested
{
public static void Main(string[] args)
{
int first = 7, second = -23, third = 13;
if (first > second)
{
if (firstNumber > third)
{
Console.WriteLine("{0} is the largest", first);
}
else
{
Console.WriteLine("{0} is the largest", third);
}
}
else
{
if (second > third)
{
Console.WriteLine("{0} is the largest", second);
}
else
{
Console.WriteLine("{0} is the largest", third);
}
}
}
}
}
当我们运行程序时,输出将是:
13 is the largest