赞
踩
这是【C# 教程系列第 2 篇】,如果觉得有用的话,欢迎关注专栏。
今天周末,白天出去潇洒了,晚上有时间了(说了一句废话),整理了两者的区别,和我一样有过类似疑问的朋友可以参考下,哪里有总结的不对的地方,望不吝赐教。
if…else
优点:使用灵活,代码空间小 ;
缺点:效率低,因为 if else 必须遍历所有的可能值;
switch…case
优点:代码结构清晰,效率高;
缺点:
1、不够灵活,switch 仅支持 int, char, unsigned char 等基本类型。
2、代码空间大,因为它要生成跳表,特别是当 case 常量分布范围很大但实际有效值又比较少的情况,switch…case 的空间利用率将变得很低。对于 switch,实际上是根据 case 最小值与最大值,维系了一段连续的内存空间,以空间换取时间;
if…else
系统是自上而下逐个条件去判断,直到符合条件,所以应将机率大的条件置于最前面。
switch…case
switch 语句根据一个整数索引值进行多重分支,底层采用跳转表这种数据结构。跳转表是一个数组,表项 i 对应代码段的地址。当 switch 索引值等于表项 i 时采取对应的程序操作。
可简单理解为:
执行 switch 时生成一个长度为最大 case+1 的数组,程序首先判断 switch 变量是否大于最大 case 常量,若大于,则跳到 default 分支处理。否则取得数组索引号为 switch 变量值大小,取得数组对应值即为相应 case 代码块地址,程序接着跳到此地址执行,完成分支的跳转。
switch…case 只能处理 case 为常量的情况,对非常量的情况是无能为力的。
例如 if (x > 1 && x < 100),是无法使用 switch…case 来处理的。
所以,switch 只能是在常量选择分支时比 if…else 效率高,但是 if…else 能应用于更多的场合,它比较灵活。
结束语:
在一个 unity 群里,一位大神说了这样一句话,值得深思。作为程序员,不能知其然,而应该要知其所以然才行。
前几天在群里,我说我准备写关于 if…else 语句与 switch…case 语句区别的博客,群里一部分人感觉有点可笑,觉得这么简单的流程语句还用写博客?不过也有支持我的,因为他们曾经也有过这样的疑问。
既然我遇到了疑问,那我就去总结,知其所以然,我才能进步的更快。再接再厉,向大神的部队前进…
Over……
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
结束语
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。