在编程中不可避免地要测试条件。我们经常会遇到需要测试条件(无论是true
还是false
)来控制程序流程的情况。这些条件可能会受到用户输入,时间因素,程序正在运行的当前环境等的影响。
在本文中,我们将学习在C#中使用if语句测试条件。
C#if(if-then)语句
如果给定条件为真,则C#if-then语句将执行代码块。 C#中if-then语句的语法为:
if (boolean-expression)
{
// statements executed if boolean-expression is true
}
- 布尔表达式将返回true或
false
。 - 如果boolean-expression返回
true
,则将执行if(内部{...}
)体内的语句。 - 如果boolean-expression返回
false
,则if体内的语句将被忽略。
例如,
if (number < 5)
{
number += 5;
}
在此示例中,语句
number += 5;
仅当number的值小于5时才会执行。
还记得+ = 运算符吗?
如果语句如何工作?
示例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
将被执行。
如果… 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块中的代码将被执行。
如果… else语句,C#中的三元运算符为C#提供了快捷方式。
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(or else if)块内部的代码。然后控件跳出if … else if块。
如果所有表达式都不为true
,则执行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内部的代码块。
同样,我们可以更改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