if...else if...语句有时被归类在判断语句中,那么它到底属不属于分支于句,它和分支语句有什么区别?
这是个好问题。之所以说它好,是因为它确实总在不经意中困扰着我们。虽然我们已经会使用它了,但是,它依然总是在无意间跳出来提醒我们,if...else if...到底是判断语句呢,还是分支语句?
好的,这里我就确切地告诉你,它既是判断语句,也是分支语句。因为,在形式上,它既做了判断,也存在分支。事实上,关于if...else if...究竟是判断语句还是分支语句,并不重要,重要的是你能真正的理解它、并擅长使用它。
实际上,它让我们产生困惑的原因,就是因为它的存在正好介于标准的判断语句和典型的分支语句之间,并且,拥有双方的共同特征。
前面回答的问题当中,我们已经详细介绍了判断语句语法特征和使用方法。有兴趣的同学可以公众号顶部查看《C#编程基础知识专辑》内容。
那么,今天呢,我们借这个问题,先介绍一下分支语句的语法特征和使用方法,回头我们再来分析,到底是什么东西在一直影响或困扰着我们?
通常,我习惯于把switch...case...语句成为标准的分支语句。下面我们来看看它的语法特征。
switch (obj)
{
case value1:
//当obj值为value1时,应该改执行的代码
break;
case value2:
//当obj值为value2时,应该改执行的代码
break;
case value3:
//当obj值为value3时,应该改执行的代码
break;
...
default:
//当obj值不为value1-3时,默认该改执行的代码
break;
}
语法特征:
1、switch括号中的obj对象,必须是一个有值的、可枚举的对象。
2、case语句数量不限。
3、case后面的对象,必须是一个常量,且与switch括号里的a对象具有相同的数据类型。
上面的语法,通俗的理解就是:我们需要通过判断一个对象obj的值究竟是什么,来决定程序接下来该选择执行哪一块代码。
下面,我们看一个简单的实例:
//创建变量a
int a = 3;
//根据目标对象的值,选择程序可执行的代码块
switch (a)
{
case 1:
Console.WriteLine("较小");
break;
case 2:
Console.WriteLine("一般");
break;
case 3:
Console.WriteLine("较大");
break;
default:
Console.WriteLine("未知");
break;
}
上面代码执行的结果是在屏幕上输出:3。
switch...case...就是所谓的典型的分支语句的特征,它集中关注一个特定对象的值,并且会因为它的值不同,而选择执行不同的代码块。
那么,到此,我们可以将它与if...else if ...语句进行比较,看看他们有什么相似和不同之处:
相似之处:
不同之处:
正因为,两者之间存在显著的不同,大多是时候的If...else if...语句的代码无法用switch...case...语句替代。但是,比较有意思的是,几乎所有的switch...case...语句的代码,都可以使用If...else if...语句来替代。
我们将前面的switch...case...语句的案例,修改为If...else if...语句,代码如下:
//创建变量a
int a = 3;
//多重条件判断,决定程序可执行的代码块
if (a == 1)
{
Console.WriteLine("较小");
}
else if (a == 2)
{
Console.WriteLine("一般");
}
else if (a == 3)
{
Console.WriteLine("较大");
}
else
{
Console.WriteLine("未知");
}
//这里最后一个else是必须的,并且它不再携带条件判断。
好了,通过以上的介绍和对比分析,相信你对If...else if...究竟是不是分支语句,已经不再感兴趣了。作为程序员,深入理解一个语法对象本身才是最重要的。