C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句 C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句

本章内容

1. 声明布尔变量
2. 使用布尔操作符来创建结果为 true 或 false 的表达式
3. 使用 if 语句,依据一个布尔表达式的结果来做出决策
4. 使用 switch 语句做出更复杂的决策

4.1 声明布尔变量

Microsoft Visual C#提供了一个名为 bool 的数据类型。bool 变量只能容纳两个值之一:true或 false。

4.2 使用布尔操作符

布尔操作符(Boolean operator)是求值结果要么为 true,要么为 false 的一个操作符。最简单的是 NOT(求反)操作符,它用感叹号(!)来表示。

4.2.1 理解相等和关系操作符

C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
相等操作符(==)和赋值操作符(=)不要搞混了。

4.2.2 理解条件逻辑操作符

C#还提供了另两个布尔操作符:逻辑 AND(逻辑与)操作符(用&&表示)和逻辑 OR(逻辑或)操作符(用||表示)。这两个操作符统称为条件逻辑操作符(conditional logical operator)。

4.2.3 短路求值

操作符&&和||都支持一个名为短路求值(short circuiting)的功能。
例如,假定操作符&&的左操作数求值为 false,那么整个表达式的结果肯定是 false,无论右操作数的值是什么。类似地,如果操作符||的左操作数求值为 true,那么整个表达式的结果肯定是 true。在这些情况下,操作符&&和||将跳过对右侧的布尔表达式的求值。
将容易计算、简单的布尔表达式放到条件逻辑操作符的左边,将较复杂的表达式放到右边。在许多情况下,程序并不需要对更复杂的表达式进行求值。

4.2.4 操作符的优先级和结合性总结

同一个类别中的操作符具有相同的优先级。在“类别”列表中,各个类别按照从高到低的顺序排列。一个更高类别中的操作符优先于较低类别中的操作符。
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句

4.3 使用if语句来做出决策

4.3.1 理解if语句的语法

C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
注意:
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句

4.3.2 使用代码块来对语句进行分组

将语句分组到一个代码块(block)中。代码块是指用一对大括号来封闭的一系列语句。代码块还界定了一个新的作用域。你可以在一个代码块内部定义变量,但这些变量会在代码块结束处消失。

4.3.3 嵌套if语句

可以在一个 if 语句中嵌套其他 if 语句。

4.4 使用switch语句

4.4.1 理解switch语句的语法

C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
我们将 constantExpression 称为 case 标签,一个 case 标签所标识的代码块则称为 case 块。
注意:
每个 constantExpression 的值都必须是唯一的,使 controllingExpression 只能与它们当中的一个值匹配。 如果controllingExpression的值和任何一个constantExpression 的值都不匹配,也没有 default 标签,程序就从 switch 的结束大括号之后的第一个语句继续执行。

4.4.2 遵守switch语句的规则

1. 只能将 switch 语句用于基本数据类型,例如 int 或 string。对于其他任何类型(包括float 和 double 类型),只能用 if 语句。
2. case 标签必须是常量表达式(constantExpression),如 42 或者"42"。如果需要在运行时计算 case 标签的值,则必须使用 if 语句。
3. case 标签必须具有唯一性;也就是说,不允许两个 case 标签具有相同的值。
4. 可以连续写一系列 case 标签(中间不间插额外的语句),指定在多种情况下都运行相同的语句。如果像这样写,最后一个 case 标签之后的代码将适用于所有 case。
注意:
break 语句是用来阻止直通的最常见的方式,但也可以用一个 return 语句或者一个throw 语句来替代它。
在使用 C#编程时,必须为 switch 语句中的每个 case(包括 default case)都提供一个 break 语句。