C# if分支语句的用法(非常详细,附带实例)
在生活中,每个人都要做出各种各样的选择。例如,吃什么菜?走哪条路?找什么人?那么当程序遇到选择时,该怎么办呢?这时需要使用的就是选择结构语句。
C# 中的 if 语句是最基础的一种选择结构语句,它主要有 3 种形式,分别为最简单的 if 语句、if…else 语句和 if…else if…else 多分支语句,本节将分别对它们进行详细讲解。
这种形式的 if 语句相当于汉语里的“如果……那么……”,其流程图如下图所示:

图 1 if 语句流程图
【实例 1】使用 if 语句判断用户输入的数字是不是奇数,代码如下:
奇数的条件是不能被 2 整除。因此,第 5 行代码判断用户输入的数求余 2 是否不等于 0,以此来确定用户的输入是不是奇数。
运行程序,当输入 5 时,结果如下:
当输入 6 时,结果如下:
注意,if 语句后面如果只有一条语句,可以不使用大括号 {}。例如,下面的代码:
下面罗列了一些初学者使用 if 时的常见错误:
1) if语句后面多加了分号。例如,if 语句正确表示如下:
2) 使用 if 语句时,如果要将多个语句作为复合语句来执行,例如,程序的真正意图是如下语句:

图 2 公司发展面临的抉择
C# 中提供了 if…else 语句解决类似问题,其语法如下:

图 3 if…else语句流程图
【实例 2】使用 if…else 语句判断用户输入的分数是不是足够优秀,如果大于 90,则表示优秀,否则,输出“希望你继续努力”,代码如下:
当输入一个小于 90 的数时(比如 87),结果为:
下面罗列了几个使用 if…else 的注意事项:
1) 在使用 else 语句时,else 不可以单独使用,它必须和关键字 if 一起使用,例如,下面的代码是错误的:
2) 在程序中使用 if…else 语句时,如果出现 if 语句多于 else 语句的情况,将会出现悬垂 else 问题,究竟 else 和哪个 if 相匹配呢?例如,下面的代码:

图 4 购物时的付款页面
图 4 中提供了 3 种付款方式,这时用户就需要从多个选项中选择一个。在开发程序时,如果遇到多选一的情况,则可以使用 if…else if…else 语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,进行某种处理,否则,如果满足另一种条件,则执行另一种处理……”。
if…else if…else 语句的语法格式如下:
if…else if…else 语句的流程如下图所示:

图 5 if…else if…else语句的流程图
注意,if 和 else if 都需要判断表达式的真假,而 else 则不需要判断。另外,else if 和 else 都必须跟 if 一起使用,不能单独使用。
【实例 3】使用 if…else if…else 多分支语句实现根据用户输入的年龄输出相应信息提示的功能,代码如下:
运行程序,输入一个年龄值,按 <Enter> 键,即可输出相应的信息提示,效果为:
例如,在最简单的 if 语句中嵌套 if…else 语句,形式如下:
又如,在 if…else 语句中嵌套 if…else 语句,形式如下:
【实例 4】通过使用嵌套的 if 语句实现判断用户输入的年份是不是闰年的功能,代码如下:
运行程序,当输入一个闰年年份时(比如 2000),效果为:
当输入一个非闰年年份时(比如 2023),效果为:
C# 中的 if 语句是最基础的一种选择结构语句,它主要有 3 种形式,分别为最简单的 if 语句、if…else 语句和 if…else if…else 多分支语句,本节将分别对它们进行详细讲解。
C# if语句
在 C# 中使用 if 关键字来组成选择语句,其最简单的语法形式如下:
if(表达式)
{
语句块
}
//下一条语句
其中,表达式部分必须用 () 括起来,它可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式:
- 如果表达式的值为真,则执行“语句块”,之后继续执行“下一条语句”;
- 如果表达式的值为假,就跳过“语句块”,执行“下一条语句”。
这种形式的 if 语句相当于汉语里的“如果……那么……”,其流程图如下图所示:

图 1 if 语句流程图
【实例 1】使用 if 语句判断用户输入的数字是不是奇数,代码如下:
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字:");
int iInput = Convert.ToInt32(Console.ReadLine()); //记录用户的输入
if (iInput % 2 != 0) //使用if语句进行判断
{
Console.WriteLine(iInput + " 是一个奇数!");
}
Console.ReadLine();
}
第 4 行代码使用 Convert.ToInt32 方法将用户的输入强制转换成了 int 类型,并使用 int 类型变量记录;奇数的条件是不能被 2 整除。因此,第 5 行代码判断用户输入的数求余 2 是否不等于 0,以此来确定用户的输入是不是奇数。
运行程序,当输入 5 时,结果如下:
请输入一个数字:
5
5 是一个奇数!
当输入 6 时,结果如下:
请输入一个数字:
6
注意,if 语句后面如果只有一条语句,可以不使用大括号 {}。例如,下面的代码:
if(a>b)
max = a;
不建议开发人员使用这种形式,不管 if 语句后面有多少要执行的语句,都建议使用大括号 {} 括起来,这样方便代码的阅读。下面罗列了一些初学者使用 if 时的常见错误:
1) if语句后面多加了分号。例如,if 语句正确表示如下:
if (i == 5)
Console.WriteLine("i的值是5");
上面两行代码的本意是:当变量 i 的值为 5 时,执行 if 下面的输出语句。但是,如果在 if 判断后面多加了分号,例如,将上面的代码修改成如下代码:
if (i == 5);
Console.WriteLine("i的值是5");
此时输出语句将会无条件执行,if 语句就起不到判断的作用。2) 使用 if 语句时,如果要将多个语句作为复合语句来执行,例如,程序的真正意图是如下语句:
if (flag)
{
i++;
j++;
}
但是,如果省略了大括号 {},代码如下:
if (flag)
i++;
j++;
执行程序时,无论 flag 是否为 true,j++ 都会无条件执行,这显然与程序的本意是不符的,但程序并不会报告异常,因此这种错误很难发现。C# if…else语句
如果遇到只能二选一的条件,比如某个公司在发展过程中遇到了“扩张”和“求稳”的抉择,示意图如下图所示。
图 2 公司发展面临的抉择
C# 中提供了 if…else 语句解决类似问题,其语法如下:
if(表达式)
{
语句块1;
}else{
语句块2;
}
使用 if…else 语句时,表达式可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式,如果满足条件,则执行 if 后面的语句块,否则,执行 else 后面的语句块,这种形式的选择语句相当于汉语里的“如果……否则……”,其流程图如下图所示。
图 3 if…else语句流程图
【知识点扩展】
if…else 语句可以使用条件运算符进行简化,如下面的代码:
if(a > 0)
b = a;
else
b = -a;
可以简写成:
b = a > 0 ? a : 0;上段代码主要实现求绝对值的功能,如果 a>0,就把 a 的值赋值给变量 b,否则将 -a 赋值给变量 b。使用条件运算符的好处是可以使代码简洁,并且有一个返回值。
【实例 2】使用 if…else 语句判断用户输入的分数是不是足够优秀,如果大于 90,则表示优秀,否则,输出“希望你继续努力”,代码如下:
static void Main(string[] args)
{
Console.WriteLine("请输入你的分数:");
int score = Convert.ToInt32(Console.ReadLine()); // 记录用户的输入
if (score > 90) // 判断输入是否大于90
{
Console.WriteLine("你非常优秀!");
}
else // 不大于90的情况
{
Console.WriteLine("希望你继续努力!");
}
Console.ReadLine();
}
运行程序,当输入一个大于 90 的数时(比如 93),结果为:
请输入你的分数:
93
你非常优秀!
当输入一个小于 90 的数时(比如 87),结果为:
请输入你的分数:
87
希望你继续努力!
下面罗列了几个使用 if…else 的注意事项:
1) 在使用 else 语句时,else 不可以单独使用,它必须和关键字 if 一起使用,例如,下面的代码是错误的:
else{
max = a;
}
2) 在程序中使用 if…else 语句时,如果出现 if 语句多于 else 语句的情况,将会出现悬垂 else 问题,究竟 else 和哪个 if 相匹配呢?例如,下面的代码:
if(x>1)
if(y>x)
y++
else
x++
如果遇到上面的情况,记住:在没有特殊处理的情况下,else 永远都与最后出现的if语句相匹配,即上面代码中的 else 是与 if(y>x) 语句相匹配的。如果要改变 else 语句的匹配对象,可以使用大括号,例如,将上面的代码修改如下:
if(x>1){
if(y>x)
y++
}
else
x++
如果修改成这样,else 将与 if(x>1) 语句相匹配。C# if…else if…else语句
在网上购物付款时通常都有多种选择,如下图所示:
图 4 购物时的付款页面
图 4 中提供了 3 种付款方式,这时用户就需要从多个选项中选择一个。在开发程序时,如果遇到多选一的情况,则可以使用 if…else if…else 语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,进行某种处理,否则,如果满足另一种条件,则执行另一种处理……”。
if…else if…else 语句的语法格式如下:
if(表达式1)
{
语句块1;
}else if(表达式2){
语句块2;
}else if(表达式3){
语句块3;
}
...
else if(表达式m){
语句块m;
}else{
语句块n;
}
使用 if…else if…else 语句时,表达式部分必须用括号 () 括起来,它可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式。如果表达式的值为真,则执行语句;如果表达式的值为假,则跳过该语句,进行下一个 else if 的判断,只有在所有表达式都为假的情况下,才会执行 else 中的语句。if…else if…else 语句的流程如下图所示:

图 5 if…else if…else语句的流程图
注意,if 和 else if 都需要判断表达式的真假,而 else 则不需要判断。另外,else if 和 else 都必须跟 if 一起使用,不能单独使用。
【实例 3】使用 if…else if…else 多分支语句实现根据用户输入的年龄输出相应信息提示的功能,代码如下:
static void Main(string[] args)
{
int YouAge = 0; // 声明一个int类型的变量YouAge,值为0
Console.WriteLine("请输入您的年龄:");
YouAge = int.Parse(Console.ReadLine()); // 获取用户输入的数据
if (YouAge <= 18) // 调用if语句判断输入的数据是否小于或等于18
{
// 如果小于或等于18,则输出提示信息
Console.WriteLine("您的年龄还小,要努力奋斗哦!");
}
else if (YouAge > 18 && YouAge <= 30) // 判断是否大于18岁且小于或等于30岁
{
// 如果输入的年龄大于18岁且小于或等于30岁,则输出提示信息
Console.WriteLine("您现在的阶段正是努力奋斗的黄金阶段!");
}
else if (YouAge > 30 && YouAge <= 50) // 判断输入的年龄是否大于30岁且小于或等于50岁
{
// 如果输入的年龄大于30岁且小于或等于50岁,则输出提示信息
Console.WriteLine("您现在的阶段正是人生的黄金阶段!");
}
else
{
Console.WriteLine("最美不过夕阳红!");
}
Console.ReadLine();
}
第 5 行代码中的 int.Parse 方法用来将用户的输入强制转换成 int 类型。运行程序,输入一个年龄值,按 <Enter> 键,即可输出相应的信息提示,效果为:
请输入您的年龄:
35
您现在的阶段正是人生的黄金阶段!
C# if语句的嵌套
前面讲过 3 种形式的 if 选择语句,这 3 种形式的选择语句都可以互相进行嵌套。例如,在最简单的 if 语句中嵌套 if…else 语句,形式如下:
if(表达式1)
{
if(表达式2)
{
语句块1;
}else{
语句块2;
}
}
又如,在 if…else 语句中嵌套 if…else 语句,形式如下:
if(表达式1)
{
if(表达式2)
{
语句块1;
}else{
语句块2;
}
}else{
if(表达式3)
{
语句块3;
}else{
语句块4;
}
}
if 选择语句可以有多种嵌套方式,在开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要注意逻辑关系的正确处理。【实例 4】通过使用嵌套的 if 语句实现判断用户输入的年份是不是闰年的功能,代码如下:
static void Main(string[] args)
{
Console.WriteLine("请输入一个年份:");
int iYear = Convert.ToInt32(Console.ReadLine()); // 记录用户输入的年份
if (iYear % 4 == 0) // 四年一闰
{
if (iYear % 100 == 0)
{
if (iYear % 400 == 0) // 四百年再闰
{
Console.WriteLine("这是闰年");
}
else // 百年不闰
{
Console.WriteLine("这不是闰年");
}
}
else
{
Console.WriteLine("这是闰年");
}
}
else
{
Console.WriteLine("这不是闰年");
}
Console.ReadLine();
}
判断闰年的方法是“四年一闰,百年不闰,四百年再闰”。程序使用嵌套的 if 语句对这 3 个条件进行逐一判断:
- 第 5 行代码首先判断年份能否被 4 整除 iYear%4==0,如果不能整除,输出字符串“这不是闰年”;
- 如果能整除,第 7 行代码继续判断能否被 100 整除 iYear%100==0,如果不能整除,输出字符串“这是闰年”;
- 如果能整除,第 9 行代码继续判断能否被 400 整除 iYear%400==0,如果能整除,输出字符串“这是闰年”,如果不能整除,输出字符串“这不是闰年”。
运行程序,当输入一个闰年年份时(比如 2000),效果为:
请输入一个年份:
2000
这是闰年
当输入一个非闰年年份时(比如 2023),效果为:
请输入一个年份:
2023
这不是闰年
ICP备案:
公安联网备案: