if (a == b) {
//使用比较运算符 //输出比较相等信息
Console.WriteLine(\相等\ } else {
Console.WriteLine(\不相等\ }
//输出比较不相等信息
关系运算符如“>”,“<”,“>=”,“<=”等同样是比较两个对象并返回布尔值。
技巧:在使用判断的时候,可以直接使用表达式,只要表达式的返回值是布尔型的即可,同样也可以使用类型转换Convert.ToBoolean方法转换。
初学者很容易错误的使用关系运算符中的“==”号,因为初学者通常会将等于运算符编写为“=”号,示例代码如下所示。
if (a = b)
//使用布尔值布尔值
在这里,“=”号不等于“==”号,“=”号的意义是给一个变量赋值,而“==”号是比较两个变量的值是否相等,如果写成上述代码,虽然编译器不会报错,但是其运行过程就不是开发人员想象的流程。
5.逻辑运算符
逻辑运算符和布尔类型组成逻辑表达式。NOT运算符“!”使用单个操作数,用于转换布尔值,即取非,示例代码如下所示。
bool myBool = true;
//创建布尔变量 //使用逻辑运算符
bool notTrue = !myBool; 则返回false,示例代码如下所示。
bool myBool = true;
C#使用AND运算符“&&”。该运算符使用两个操作数做与运算,当有一个操作数的布尔值为false时,
//创建布尔变量 //使用逻辑运算符取反 //使用逻辑运算符计算
bool notTrue = !myBool;
bool result = myBool && notTrue;
同样,C#中也使用“||”运算符来执行OR运算,当有一个操作数的布尔值为true时,则返回true。
7.赋值运算符
C#提供了几种类型的赋值运算符,最常见的就是“=”运算符。C#还提供了组合运算符,如“+=”、“-=”、“*=”等。“=”运算符通常用来赋值,示例代码如下。
int a,b,c;
//声明三个整型变量 //使用赋值运算符
a = b = c = 1;
上述代码声明并初始化3个整型变量a、b、c并初始化值这些变量的值为1。加法赋值运算符“+=”将加法和赋值操作组合起来,先把第一个数值的值加上第二个数值的值再存放到第一个数值的,示例代码如下所示。
a += 1;
//进行自加运算
上述代码会将变量a的值加上1并再次赋值回a,上述代码实现的功能和以下代码等效。 a = a + 1; 9.2 运算符的优先级
开发人员需要经常创建表达式来执行应用程序的计算,简单的有加减法,复杂的有矩阵、数据结构等,在创建表达式时,往往需要一个或多个运算符。在多个运算符之间的运算操作时,编译器会按照运算符的优先级来控制表达式的运算顺序,然后再计算求值。例如在生活中也常常遇到这样的计算,如1+2*3。如果在程序开发中,编译器优先运算“+”运算符并进行计算就会造成错误的结果。
1.运算顺序
表达式中常用的运算符的运算顺序如表2-7所示。 表2-7 运算符优先级
运算符类型 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 运算符 *,/,% <,>,<=,>=,is,as &,^,| &&,||,? =,+=,-=,*=,/=,<<=,>>=,&=,^=,|= //不使用+=运算符
10、 使用条件语句
程序开发中,开发人员经常遇到选择性的问题,如用户是否注册。如果用户已经注册则允许用户登陆,否则就跳转到注册页面。这个时候,就需要在程序中使用条件语句。if是最常用的条件语句,同时,if还包括if、if else、if else if等语句用于执行复杂的条件选择。 10.1 if语句的使用方法
if语句用于判断条件并按照相应的条件执行不同的代码块,if语句包括多种呈现形式,这些形式分别是if、if else、if else if。
1.声明if语句
if语句的语法如下所示。 if(布尔值) 程序语句
当布尔值为true,则会执行程序语句,当布尔值为false时,程序会跳过执行的语句执行,示例代码如下所示。
if (true) {
console.writeline(\ }
上述代码首先会判断if语句的条件,因为if语句的条件为true,所以if语句会执行大括号内的代码,程序运行会输出字符串true,如果将if内的条件改为false,那么程序将不会执行大括号内的代码,从而不会输出字符串true。
2.声明if else语句
if else语句的语法如下所示。
if(布尔值) 程序语句1 else 程序语句2
同样,当布尔值为true,则程序执行程序语句1,但当布尔值为false时,程序则执行程序语句2,示例代码如下所示。
if (true) {
console.writeline(\ } else {
console.writeline(\ }
上述代码中if语句的条件为true,所以if语句会执行第一个大括号中间的代码,而如果将true改为false,则if语句会执行第二个大括号中的代码。
3.声明if else if语句
当需要进行多个条件判断是,可以编写if else if语句执行更多条件操作,示例代码如下所示。 if (month == \ {
console.writeline(\ }
else if (month == \ {
console.writeline(\ }
else if (month == \ {
console.writeline(\
//输出spring
//判断month是否等于3
//输出summer
//判断month是否等于7
//输出winter
//判断month是否等于12
//当条件为假时执行语句
//如果条件不成立则执行
//当条件为真时执行语句
//使用if语句判断条件
//为true的代码块
//使用if语句
} else {
console.writeline(\ }
上述代码会判断相应的月份,如果月份等于12,就会执行相应的大括号中的代码,否则会继续进行判断,如果判断该月份即不是3月也不是7月,说明所有的条件都不复合,则会执行最后一段大括号中的代码。
10.2 switch选择语句的使用
switch语句根据某个传递的参数的值来选择执行的代码。在if语句中,if语句只能测试单个条件,如果需要测试多个条件,则需要书写冗长的代码。而switch语句能有效的避免冗长的代码并能测试多个条件。
1.声明switch选择语句 Switch语句的语法如下所示。 switch (参数的值) {
case 参数的对应值1: 操作1; break; case 参数的对应值2: 操作2; break; case 参数的对应值3: 操作3; break; }
从上述语法格式中可以看出switch的语法格式。在switch表达式之后跟一连串case标记相应的switch块。当参数的值为某个case对应的值的时候,switch语句就会执行对应的case的值后的操作,并以break结尾跳出switch语句。若没有对应的参数时,可以定义default条件,执行默认代码,示例代码如下所示。
int x; switch (x) {
case 0: Console.WriteLine(\ case 1: Console.WriteLine(\ case 2: Console.WriteLine(\ }
在上述代码中,当x等于0的时候,就会执行case 0的操作,就执行了Console.WriteLine(\。如果x等于1,语句就会执行case 1的操作。switch不仅能够通过数字进行判断,还能够通过字符进行判断。
2.使用break跳出语句
从上述代码中可以看出,每一个操作后面都使用了一个break语句。在C/C++中,程序员可以被允许不写break而贯穿整个switch语句,但是在C#中不以break结尾是错误的,并且编译器不会通过。因为C#的switch语句不支持贯穿操作,因为C#中是希望避免在应用程序的开发中出现这样的错误。
//x=0时执行 //x=1时执行 //x=2时执行
//switch语句
//输出默认情况
//当都不成立时执行
default:Console.WriteLine(“这是默认情况”);break;
注意:在C#中,可以使用goto语句模拟,继续执行下一个case或default。尽管在程序中可以这样做,但是会降低代码的可读性,所以不推荐使用goto语句。
注意:在switch语句中,default语句并不是必须的,但是编写default是可以为条件设置默认语句。
11、 使用循环语句
程序开发中,经常需要对某个代码块执行循环,使编译器能够重复执行某个代码块来完成计算。循环能够减少代码量,避免重复输入相同的代码行,也能够提高应用程序的可读性。常见的循环语句有for、while、do、for each。 11.1 for循环语句
for循环一般用于已知重复执行次数的循环,是程序开发中常用的循环条件之一,当for循环表达式中的条件为true时,就会一直循环代码块。因为循环的次数是在执行循环语句之前计算的,所以for循环又称作预测式循环。当表达式中的条件为false时,for循环会结束循环并跳出。for循环语法格式如下所示。
for(初始化表达式,条件表达式,迭代表达式) 循环语句
for循环的优点就是for循环的条件都位于同一位置,同样,循环的条件可以使用复杂的布尔表达式表示。for循环表达式包含三个部分,即初始化表达式、条件表达式和迭代表达式。当for循环执行时,将按照以下顺序执行。
? 在for循环开始时,首先运行初始化表达式。 ? 初始化表达式初始化后,则判断表达式条件。 ? 若表达式条件成立,则执行循环语句。 ? 循环语句执行完毕后,迭代表达式执行。
? 迭代表达式执行完毕后,再判断表达式条件并循环。
开发人员能够通过编写for循环语句进行代码块的重复,示例代码如下所示。 for (int i = 0; i < 100; i++) {
Console.WriteLine(i); }
技巧:for循环即可做增量操作也可以做减量操作,如可以写为for(int i=10;i>0;i--),说明for循环的结构非常灵活,同样for循环的条件,迭代表达式也不仅仅局限与此。 11.2 while循环语句
学生看项目指导书自学 11.3 foreach循环语句
学生看项目指导书自学
//输出i变量的值
//循环100次
12、 异常处理语句try-catch-finally
C#为处理程序执行期间可能出现的异常情况提供内置支持,这些异常由正常控制流之外的代码处理。常用的异常语句包括throw,try,catch等。try-catch-final语句能够使应用程序更加健壮。try-finally语句依旧会抛出异常,而try-catch-finally语句能够捕获异常并执行finally语句中的控制语句,try-catch-finally语句结构和很灵活,示例代码如下所示。
int x = 1; int y = 0; try {
x = x / y; }
catch (Exception ee) {
Console.WriteLine(\除数不能为空,具体错误信息如下所示\ Console.WriteLine(ee.ToString()); } finally {
Console.WriteLine(\系统已自动停止\ }
上述代码试图用一个整型变量除以一个值为0的整型变量,当异常发生时,catch捕获并抛出异常,捕获异常后,finally语句也被执行。运行结果如图2-27所示。
图2-27 try-catch-finally语句运行示例
//继续执行程序
//继续执行程序块
//抛出异常 //输出异常信息
//捕获异常信息
//进行除法计算
//声明整型变量x //声明整型变量y //尝试处理代码块
13、 小结
本讲介绍了C#语言的基本知识,包括变量、变量规则、表达式、条件语句、循环语句以及异常处理,本章主要讲解了:
? 变量:介绍了变量的概念、变量的声明以及初始化。 ? 变量规则:介绍了变量的命名、规则。 ? 表达式:介绍了表达式的创建和使用方法。
? 条件语句:介绍了if、if else、if else if、switch等条件语句的使用方法。 ? 循环语句:介绍了for,while、do while、foreach等循环语句的使用方法。 ? 异常处理:介绍了异常以及try-catch-finally语句的使用方法。