在C#语言中有许多对变量进行处理的运算符,把变量和操作数与运算数组合起来就可以创建一个表达式。
程序语句是由表达式构成,表达式由常量、变量和运算符构成,运算符的运用范围非常广泛,有简单的,也有复杂的,在C#语言中,有算术运算符、比较运算符、逻辑运算符、赋值运算符、条件运算符 。下图列出常见的运算符及对应的类别。
ASP.NET--表达式、运算符与分支结构_结构
需要重点介绍“ + ” 作为字符串拼接的运用。其实前面的综合案例中已经初步接触了这个应用,这里需要重点讲解: 区分什么时候它用作加法运算:
如果+ 两边是整数或数字时 ,作加法运算;
如果+ 两边的运算数只要有一边的类型是字符串时(不是字符串类型的一边会自动转换为字符串),作字符串拼接。
介绍++,-- 运算符
应该说明 i++或++i相当于 i=i+1;说明 i--或--i相当于 i=i-1;
1)强调不能使用常数,比如 ++3;
2)强调++i 和 i++ 的 区别.可以使用下面的例子:
int i = 3;
int j = i++;//结果为3
int k = i;//结果为4
i=3;
j = ++i;//结果为4
k=I;//结果为4
同样--i 和 i--也有这种区别
介绍各个运算符的用法时,应该用C# 写出具体例子的表达式,加深学员的认识
比如 a=2;b=3; c=a+b或者 c=a+3;
比较运算符
下图是比较运算符的用法;
ASP.NET--表达式、运算符与分支结构_结构_02
运算符和表达式
逻辑运算符
&& || !
赋值运算符
= += -= *= /= %=
条件运算符
?:
下图是运算符的优先级
ASP.NET--表达式、运算符与分支结构_ASP_03
需要提醒注意方法中使用的括号不是运算符,比如 ConSole.Write( )。
同一个优先级的执行顺序是从左到右的。
列举表达式的例子说明。
int i=3; ++i * 5 + 6 结果为26
2+7 >=10-2 结果为true
2+7 >=10-2 && 10%2==5 结果为false
int i=3; i+1>4 ? (i+1): (i-1) 结果为 2
在编写程序时,也常常需要对条件进行判断,那就是控制程序流程的另两种方法:分支结构和循环结构。
循环结构是重复执行相同的语句(重复执行一定的次数,或者在满足测试条件后停止执行)。
分支结构是有条件的执行代码,控制下一步要执行那些代码的过程。这里介绍C#中的分支机构:if语句和Switch语句。
If语句语法如下;
if(表达式
{
代码块
}
if(表达式
{
代码块1
}
else
{
代码块2
}
多重if语句语法如下;
if(表达式1)
{
代码块1
}
else if (表达式2 )
{
代码块2
}
……
else
{
代码块n
}
ASP.NET--表达式、运算符与分支结构_ASP_04
嵌套if语句语法如下;
if(表达式1
{
if(表达式2
{
代码块1
}
else
{
代码块2
}
}
else
{
代码块3
}
ASP.NET--表达式、运算符与分支结构_运算符_05
switch选择语句的使用
switch语句语法如下;
switch(表达式)
{
case 常量表达式1
语句1
break
……
default:
语句n
break
}
switch语句根据某个传递的参数的值来选择执行的代码。在if语句中,if语句只能测试单个条件,如果需要测试多个条件,则需要书写冗长的代码。而switch语句能有效的避免冗长的代码并能测试多个条件。
声明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) //switch语句
{
case 0: Console.WriteLine("this is 0"); break; //x=0时执行
case 1: Console.WriteLine("this is 1"); break; //x=1时执行
case 2: Console.WriteLine("this is 2"); break; //x=2时执行
default:Console.WriteLine(“这是默认情况”);break;
}
在上述代码中,当x等于0的时候,就会执行case 0的操作,就执行了Console.WriteLine("this is 0")。如果x等于1,语句就会执行case 1的操作。switch不仅能够通过数字进行判断,还能够通过字符进行判断。
使用break跳出语句
从上述代码中可以看出,每一个操作后面都使用了一个break语句。在C/C++中,程序员可以被允许不写break而贯穿整个switch语句,但是在C#中不以break结尾是错误的,并且编译器不会通过。因为C#的switch语句不支持贯穿操作,因为C#中是希望避免在应用程序的开发中出现这样的错误。
注意:在C#中,可以使用goto语句模拟,继续执行下一个case或default。尽管在程序中可以这样做,但是会降低代码的可读性,所以不推荐使用goto语句。
switch的执行顺序
switch语句能够对相应的条件进行判断,示例代码下代码所示。
int x;
switch (x) //switch语句
{
case 0: Console.WriteLine("this is 0"); break; //x=0时执行
case 1: Console.WriteLine("this is 1"); break; //x=1时执行
case 2: Console.WriteLine("this is 2"); break; //x=2时执行
default: Console.WriteLine("no one"); break; //都不满足时执行
}
从上述代码中分析,整型变量x被声明,并初始化,执行switch语句,当x的值为0的时候,case 0之后的语句就会执行,即会执行Console.WriteLine("this is 0");执行完毕后,语句执行break跳出switch语句。当x的值等于3的,switch操作会发现在case中没有与之相等的标记,则会执行default标记并执行默认的代码块。
注意:在switch语句中,default语句并不是必须的,但是编写default是可以为条件设置默认语句。
使用枚举类型
在switch表达式中,参数的类型必须为整型、字符型、字符串型、枚举类型或是能够隐式转换为以上类型的数据类型。在switch中常常会用到枚举类型,示例代码如下所示。
enum season { spring,summer,autumn,winter } //声明枚举类型
static void Main(string[] args)
{
season mySeason=season.summer; //初始化
switch (mySeason)
{
case season.spring: Console.WriteLine("this is spring"); break; //mySeason=spring时
case season.summer: Console.WriteLine("this is summer"); break; //mySeason=summer时
case season.autumn: Console.WriteLine("this is autumn"); break; //mySeason=autumn时
case season.winter: Console.WriteLine("this is winter"); break; //mySeason=winter时
default: Console.WriteLine("no one"); break;
}
Console.ReadKey(); //等待用户按键
}
组合case语句
在某些情况下,一些条件所达成的效果是相同,这就要求在switch中往往需要对多个标记使用同一语句。switch语句能够实现多个标记使用同一语句,代码如下所示。
switch (mySeason)
{
case season.spring:
case season.summer: Console.WriteLine("this is spring and summer"); break;//组合case
case season.autumn:
case season.winter: Console.WriteLine("this is autumn and winter"); break; //组合其他条件
default: Console.WriteLine("no one"); break; //默认case
}