详细解读C#系列五《多样化的程序分支》

简介: 详细解读C#系列五《多样化的程序分支》

上一篇介绍了C#程序设计分支的基本概念与基本操作,这篇的主题是高级的程序分支,例如:分支的嵌套与分支是使用的场景!与三元运算符(?:),废话少说还是开始吧!

1.三元运算符【?:】

三元运算符分为三个部分:1 条件表达式 2 条件表达式成立时返回的值 3条件表达式不成立时返回的值。例如表达式为: a > 0 ? "A>0" : "A 0】 ? 2【"A>0"】 : 3【"A<0"】, 这时我将这三个部分分别表示出来就清晰很多!了解他的组成我们来看例子(用户输入一个数字,如果数字大于零就在屏幕打印该数字大于零否则屏幕输出该数字小于零):

1 Console.Write("请输入一个数字:");

2 int a = Convert.ToInt32(Console.ReadLine());

3

4 //利用三元运算符?: 根据条件获得对应结果

5 string str = a

6

7 Console.WriteLine(str);

好的按惯例我们来分析一下:

我们来看第五行代码: string str = a

首先判断用户输入的a是否大于0 ,如果大于零那么将问号(?)后面的内容给变量str,如果小于零将冒号(:)后面的值返回给变量str!

最后程序打印结果如下:

这个时候还不算完,可能大家会联想到实现该功能另几种实现方式如:

1 if (a

2 {

3 str = "该数字大于零";

4 }//代码效果参考:http://www.ezhiqi.com/zx/art_5930.html

5 else

6 {

7 str = "该数字小于零";

8 }//代码效果参考:http://www.ezhiqi.com/zx/art_2596.html

9

10

11 switch (a

12 {

13 case true:

14 str = "该数字大于零";

15 break;

16 case false:

17 str = "该数字小于零";

18 break;

19 }

这样种方式同样也实现了次功能,但是我们还能看出三元运算符在此种情境下是否大大的简化了我们的代码量?所以在程序的开发中我们可以灵活的运用三元运算符来简化我们此种类型(判断一个表达式返回对应结果)的分支场景!

2.如何选择最为合适的分支语句

好的,加上我们在上一篇介绍的两种分支结构与我们刚才介绍的三元运算符我们来看看它们之间的区别以及在实际开发中如何选择最合理的分支结构!

那么我们还是用三种情景的例子来阐述吧!

第一种:当用户输入一个数字判断是否大于零,如果大于零那么输出该数字大于零,如果小于零输出该数字小于零,也就是我们上一个例子,那么根据上边分析后我们根据三种实现方法得出选择三元运算符(?:)是最合理的解决方案,因为它大大的减少了我们满足一个功能的代码量!

第二种:用户输入一个数字代表出生年份得出他的年龄!代码如下:

1 Console.Write("请输入你的出生年份:");

2 int year = Convert.ToInt32(Console.ReadLine());

3 int sysYear = DateTime.Now.Year;

4

5 if (year

6 {

7 Console.WriteLine("该年龄不合法!");

8 }

9 else if (sysYear == year) //判断系统年份是否等于出生年份如果等于 表示刚出生0岁

10 {

11 Console.WriteLine("刚出生0岁");

12 }

13 else//否则就拿系统当前年份减去出生年份输出年龄

14 {

15 Console.WriteLine("年龄为:" + (sysYear - year).ToString());

16 }

从上边例子中我们可以看出,当系统出现一种多种可能的情况下,我们考虑用if语句是最合理的,也是最方便的!

也就是说:在系统出现多种可能如: 判断生日是否合法,判断是否是0岁等等多种可能发生的情况时考虑用IF!

第三种:那么什么时候用switch呢?当一个条件或一个变量拥有多种状态与选择时考虑有switch。看如下场景:用户输入两个数字,在输入一个运算符,运算符只能是加减乘除(+ - * /)这四种,并且计算对应的结果代码如下:

1 Console.Write("请输入第一个数:");

2 int a = Convert.ToInt32(Console.ReadLine());

3 Console.Write("请输入第二个数:");

4 int b = Convert.ToInt32(Console.ReadLine());

5

6 Console.Write("请输入运算符,只能为加减乘除【+ - * /】:");

7 string oper = Console.ReadLine();

8

9 //此时效验 用户输入的是否是 加减乘除

10 switch (oper) // 此时oper拥有多种状态,它可以使 + - * / 也可以是其他字符串

11 {

12 case "+":

13 Console.WriteLine("a + b =" + (a + b).ToString());

14 break;

15 case "-":

16 Console.WriteLine("a - b =" + (a - b).ToString());

17 break;

18 case "*":

19 Console.WriteLine("a * b =" + (a * b).ToString());

20 break;

21 case "/":

22 //这里需要注意 被除数不能为0 所以要加一个判断

23 //根据第二种情景中介绍的当出现一种或多种情况的时候用IF

24 //那么 我们就用If来判断避免这种情况

25 if (b != 0)

26 {

27 Console.WriteLine("a / b =" + (a / b).ToString());

28 }//代码效果参考:http://www.ezhiqi.com/zx/art_576.html

29

相关文章
|
27天前
|
项目管理 开发工具 Android开发
三类代码协同模式问题之开发者将远程上游仓库克隆到本地,并在本地创建开发分支问题如何解决
三类代码协同模式问题之开发者将远程上游仓库克隆到本地,并在本地创建开发分支问题如何解决
|
26天前
|
Java 开发工具 git
代码协同模式使用问题之AGit-Flow协同模式是如何解决分支评审模式中特性分支过多、混乱的问题的
代码协同模式使用问题之AGit-Flow协同模式是如何解决分支评审模式中特性分支过多、混乱的问题的
|
17天前
|
数据可视化 安全 测试技术
部署流水线原则与工具设计
部署流水线原则与工具设计
23 1
|
26天前
|
存储 开发工具 Android开发
代码协同模式使用问题之创建特性分支,如何解决
代码协同模式使用问题之创建特性分支,如何解决
|
17天前
|
存储 测试技术 持续交付
利于集成的分支策略
利于集成的分支策略
25 0
|
27天前
|
开发者 Windows
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决
|
27天前
|
持续交付 开发工具 git
三类代码协同模式问题之什么是草稿模式的代码评审
三类代码协同模式问题之什么是草稿模式的代码评审
|
3月前
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
117 2
|
敏捷开发 测试技术 持续交付
团队如何选择合适的Git分支策略
选择合适的分支模型 Git代码分支管理模型各具特点,流程只是一个辅助工具,没有最好,只有最合适。 • 如果开发团队规模较小又比较分散,产品发布周期较短(例如:初创公司,或者开发的是一个网站或 Web 应用程序,在一天内可能需要发布多个版本),可以选择GitHub flow或者GitLab flow; • 如果开发团队规模较大,产品发布周期较长(例如:团队超过20人,采用了月度或季度发布周期,并且由一个团队负责并行开发多个项目),可以选择Git flow,发布周期较短可以选择TBD flow; • 如果开发团队规模大,产品发布周期长,同时对敏捷的要求比较高,可以考虑TBD++ flow。每个组织
14879 27
团队如何选择合适的Git分支策略
|
Cloud Native 架构师 持续交付
常见分支模式优劣对比|学习笔记
快速学习常见分支模式优劣对比
164 0
常见分支模式优劣对比|学习笔记