C#教学课件Cha.ppt_第1页
C#教学课件Cha.ppt_第2页
C#教学课件Cha.ppt_第3页
C#教学课件Cha.ppt_第4页
C#教学课件Cha.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作符和表达式,C#程序设计,第3章知识点回顾,作为复合类型,类和结构可以有( )成员、( )成员以及( )成员。一个类型不能有两个同名的成员。 一般方法成员包括( )、( )、( )和( )等四部分。方法定义中的参数叫( )参数,而调用方法时所使用的参数叫( )参数。C#中提供的参数类型有四种,即( )参数、( )参数、( )参数和( )参数,其中( )参数不能改变实际参数的值。 C#通过访问限制修饰符来控制对类型和成员的访问。( )成员只有类型本身才能访问,( )成员还可被派生类型访问,( )成员则只能在当前程序集中访问。,字段,方法,嵌套,返回类型,方法名,参数列表,执行体,形式,实际,值,引用型,输出型,数组型,值,私有,保护,内部,第3章知识点回顾,类的( )成员属于类型的实例,( )成员属于类型本身。 类型的可变实例叫( ),必须先定义后使用。 常数常量使用关键字( )定义,它在定义的同时被赋值;只读常量使用关键字( )定义,它可在( )或( )时进行赋值。,非静态,静态,const,readonly,字段定义,类型初始化,变量,操作符 一元操作符:op x 或 x op 二元操作符:x op y 三元操作符:x ? y : z,4.1 操作符,操作符的优先级,基本算术运算( + - * / ) 基本算术运算符可作用于uint、int、ulong、long以及float、double和decimal,另外四种整数类型可隐式转换为uint或int类型。,4.2 算术表达式,class Program static void Main() int a=int.MaxValue; int b=int.MaxValue; Console.WriteLine(a+b); /整数运算超出范围时将会发生溢出 double x=double.MaxValue; double y=double.MaxValue; Console.WriteLine(x); Console.WriteLine(x+y); /实数运算超出范围时,结果被设置成正无穷大 Console.WriteLine(x+y-y); ,4.2 算术表达式,枚举运算 (+ -):默认的操作是将枚举类型转换为整数类型 ,执行加法或减法运算后再将结果重新转换为枚举类型。,class Program static void Main() Weekday day=Weekday.Sun; Console.Write(day); day=day-1; Console.WriteLine(“ -1=0“,day); day=day+3; Console.WriteLine(“ +3=0“,day); day=day+3; Console.WriteLine(“ +3=0“,day); day=day+3; Console.WriteLine(“ +3=0”,day) enum Weekday Sun,Mon,Tue,Wed,Thu,Fri,Sat ,4.2 算术表达式,模运算( % ):求两个数相除的余数,适用于整数和实数 5%3=2 5%1.5=0.5 其他 字符串加法(字符串的连接) 委托的加减(委托的合并和删除),4.2 算术表达式,自增和自减表达式+ / - 适用于所有整数类型和实数类型,以及可转换为这些类型的类型。 先加减后使用 (前缀操作符)/ 先使用后加减 (后缀操作符),4.3 自增和自减表达式,按二进制位操作:& | 取补运算 操作数为int、uint、long、ulong和枚举类型,且返回类型与操作数类型相同。 sbyte、byte、short、unshort、char运算前都隐式转换为int或uint,返回类型也为int或uint。 取补运算将操作数的二进制每一位取反,01,10,4.4 位运算表达式,与& 或| 异或 操作数为int、uint、long、ulong、枚举类型和布尔类型,返回类型与操作数类型相同。 枚举类型参与运算前先转换为int类型,运算结束后再重新转换为枚举类型。 运算规则表所示。,4.4 位运算表达式,4.4 位运算表达式,位运算规则,4.4 位运算表达式,2&10,2|10,210,2:00000010,10:00001010,00000010,00001010,00000010,00001010,&,|,00000010,00001010,00001000,移位运算:左移位 左操作数可为int、uint、long、ulong,右操作数只能为int,4.4 位运算表达式,class Program public static void Main() int x=16,y=-16; for(int i=1;i0=1“,i,xi); Console.Write(“ -160=1“,i,yi); ,简单赋值:= int x=5;int y=x;long z=x+y; 复合赋值:+= -= *= /= %= ,4.5 赋值表达式,关系操作符: = != = is 相等和不等判断 = !=,4.6 关系表达式,namespace P4_9 class Program public static void Main() /方法的执行代码 enum Weekday Sun,Mon,Tue,Wed,Thu,Fri,Sat public class BankCard ,Weekday day1=Weekday.Mon; Weekday day2=Weekday.Tue; Console.WriteLine(day1+1=day2); /? BankCard card1=null; BankCard card2=null; Console.WriteLine(card1=card2); /? card1=new BankCard(); card2=new BankCard(); Console.WriteLine(card1=card2); /? int a=1,2,3; int b=1,2,3; Console.WriteLine(a=b); /? int c; c=b; Console.WriteLine(c=b); /?,相等和不相等操作符的重载,如string类型对象的比较。,关系操作符: = != = is 大小比较 = 可以作用于整型、实型和枚举类型 对于float和double型,NegativeInfinity值小于其他所有值,PositiveInfinity值则大于其他所有值。 只要有一个操作数为非数值NaN,则C#中所有比较的结果都是false。,4.6 关系表达式,关系操作符: = != = is 类型判断 e is T 在运行时动态检查左操作数的类型是否和右操作数指定的类型兼容。如果兼容则返回true,否则返回false。 e 是一个变量或表达式, T本身就是一个类型。(类System.Type的一个实例),4.6 关系表达式,double d=1.25; bool b1=d is int; /返回? bool b2=d is double; /返回?,对于值类型,使用is类型判断表达式没有实际意义,关系操作符: = != = is 类型判断 e is T 在运行时动态检查左操作数的类型是否和右操作数指定的类型兼容。如果兼容则返回true,否则返回false。 e 是一个变量或表达式, T本身就是一个类型。(类System.Type的一个实例),4.6 关系表达式,对于引用类型,如果e的值是null,则表达式返回false,当e不为null时,只要e的类型为T,或者存在从e的类型到T的隐式转换,则返回true,否则返回false。,条件逻辑表达式 逻辑与&、逻辑或|和逻辑非! 只能作用于布尔类型的操作数,返回值总是布尔类型。,4.7 条件逻辑表达式,条件逻辑运算规则,条件逻辑表达式 逻辑与&、逻辑或|和逻辑非! “短路效应” (a&b,如果a为false 则结果为false; a|b,如果a为true则结果为true) 条件组合判断 if( (year%400)= =0|(year%4)= =0&(year%100)!=0) ),4.7 条件逻辑表达式,其他特殊表达式 一元加减表达式 条件表达式 类型表达式 创建表达式 溢出检查表达式,4.8 其他特殊表达式,一元加减表达式 在c#中,加号和减号还可以作为一元操作符使用。 (1) 加号+可作用于uint、int、ulong、long以及float、double和decimal,表达式的结果就是操作数本身。 int i=+2;/ i=2 (2)减号-可作用于有符号整数类型int、long,以及float、double、decimal。运算结果的类型与操作数的类型相同,但二者绝对值相等而符号相反。 int i=-2; decimal d=-i; /d=2 int i1=int.MinValue; int i2=-i1; Console.WriteLine(i1=i2);/输出结果是什么?,4.8 其他特殊表达式,条件表达式 C#中唯一的三元操作符就是条件操作符“?:”。功能上相当于只有两个选择条件的if-else控制语句。 b?x:yif (b) x else y 条件表达式要求后两个操作数的类型兼容,结果类型是x和y中最兼容的类型。 x和y类型相同该类型就是整个表达式的类型 x类型可隐式转换成y的类型整个表达式的类型与y类型相同 y类型可隐式转换成x的类型整个表达式的类型与x类型相同 如果上述条件均不成立,则表达式不合法,将发生编译错误,4.8 其他特殊表达式,条件表达式 条件操作符可以复用,遵循从右向左分组结合原则。 a?b:c?d:e a?b:(c?d:e ),bool leap=(year%400=0)?true(year%100=0)?false:(year%4=0)?true:false;,int x=3,y=2; int z=(x+%y=0)?+x:(x/y=1)?+y:-y; Console.WriteLine(z);,4.8 其他特殊表达式,输出: 1,类型表达式 .NET类库的System程序集提供了一个名为Type的类,它对程序中的各种数据类型进行了抽象,具体的数据类型名称可由其属性Name得到。 类型判断: e is T 对于引用类型,如果e的值为null,则表达式的值始终false; 当e不为null时,只要e的类型为T,或者存在从e的类型到T的隐式引用转换,则表达式的值为true,否则返回值false。,4.8 其他特殊表达式,类型表达式 一般类型转换: (T)e T要求为某种数据类型,即类Type的一个实例。 int i=3; short s=(short)i; object obj=new BankCard(); BankCard card=(BankCard)obj;,4.8 其他特殊表达式,类型表达式 as 操作符 e as T 要求T为Type类的一个实例。 强制要求左操作数为引用类型。 as运算将左操作数转换为右操作数所代表的类型,如转换失败,返回空值null。等价于下列语句: e is T?(T)e:(T)null,4.8 其他特殊表达式,类型表达式 typeof 操作符 typeof (T) 要求T为Type类的一个实例 操作数和返回结果的类型均为Type。,4.8 其他特殊表达式,Console.WriteLine(typeof(int); /System.Int32 Console.WriteLine(typeof(string); /System.String Console.WriteLine(typeof(Type); /system.Type Console.WriteLine(typeof(Contact); /*.Contact Console.WriteLine(typeof(Contact.Address); /*.Contact+Address *为Contact类所在的命名空间名称,创建表达式 new操作符用于创建一个新的类型实例 new可以作用于值类型,也可以作用于除接口外的其他引用类型。,4.8 其他特殊表达式,Contact c1=new Contact(); c1=new Contact();,int i1=10; i1=new int();,溢出检查表达式 checked和unchecked操作符用于控制对程序中算术运算和类型转换的溢出检查。 不加声明,默认对常量表达式进行溢出检查,对非常量表达式不进行溢出检查。 Checked操作符强制对表达式进行类型检查,对于常量表达式,如果运算发生溢出,代码不能通过编译。,4.8 其他特殊表达式,byte b1=(byte)256; byte b2=255+1; /等价于byte b2=checked(255+1),常量值“256”无法转换为“byte”,溢出检查表达式 checked和unchecked操作符用于控制对程序中算术运算和类型转换的溢出检查。 对于非常量表达式,代码总能通过编译;但程序执行到溢出代码时将发生System.OverflowException异常。,4.8 其他特殊表达式,byte b1=255; byte b2=(byte)(b1+1); /默认不进行溢出检查 b2=0 byte b3=checked(byte)(b1+1); /运行程序时发生溢出,溢出检查表达式 checked和unchecked操作符用于控制对程序中算术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论