条件判断和分支(Visual C# 速成版)
更新:2007 年 11 月
为响应某种输入或计算值而更改程序中的控制流是编程语言的重要组成部分。C# 提供无条件(通过在代码中跳转到新位置)或有条件(通过执行测试)更改控制流的功能。
备注
最简单的条件分支形式使用 if 结构。可以使用具有 if 结构的 else 子句,并且 if 结构可以进行嵌套。
using System;
class Program
{
static void Main()
{
int x = 1;
int y = 1;
if (x == 1)
Console.WriteLine("x == 1");
else
Console.WriteLine("x != 1");
if (x == 1)
{
if (y == 2)
{
Console.WriteLine("x == 1 and y == 2");
}
else
{
Console.WriteLine("x == 1 and y != 2");
}
}
}
}
说明: |
---|
与 C 和 C++ 不同,if 语句要求使用布尔值。例如,不能计算为简单的 True 或 False 的语句(如 (a=10))是不允许使用的。在 C# 中,不能用 0 替换 False,也不能用 1 或任何其他值替换 True。 |
if 和 else 关键字后面的语句可以是单行代码(如上面的代码示例中第一个 if-else 语句所示),也可以是包含在大括号中的语句块(如第二个 if-else 语句所示)。采用嵌套 if-else 语句是允许的,但通常认为改用 switch 语句是更好的编程习惯。
根据给定表达式的值,switch 语句可以执行多个操作。如果满足条件,则执行 case 语句和 break 关键字之间的代码。如果要使控制流继续执行另一个 case 语句,请使用 goto 关键字。
using System;
class Program
{
static void Main()
{
int x = 3;
switch (x)
{
case 1:
Console.WriteLine("x is equal to 1");
break;
case 2:
Console.WriteLine("x is equal to 2");
break;
case 3:
goto default;
default:
Console.WriteLine("x is equal to neither 1 nor 2");
break;
}
}
}
switch 语句用于确定要执行的 case 的表达式必须使用 内置数据类型(Visual C# 速成版)(如 int 或 string);不能使用更复杂的用户定义类型。
与 Visual Basic 不同,在 C# 中条件必须是一个常数值。例如,将表达式与值范围进行比较是不允许的。