资源预览内容
第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
第9页 / 共38页
第10页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 第一部分2 访问关键字:base ,this3 base访问基类的成员。用于从派生类中访问基类的成员,1.调用基类上已经被重写的方法。2.指定创建派生类实例时应调用的基类构造函数。*对基类的访问只能在 派生类的构造函数 实例的方法 实例的属性访问器 中。属性访问器:get,set 函数。注意:!不能在静态方法中使用 base 关键字。例:在子类的方法中写 base.GetInfo();调用基类的方法。基类中的构造函数重载了,Mybase()和 Mybase(int i);在子类的构造函数中 public MyDerived():base(int i)public MyDerived(int i):base()this:引用当前对象。用于引用为其调用方法的当前实例。静态成员函数没有 this 指针。可以用于从 构造函数,实例方法,实例访问器 中访问成员。this 的一般用途:1.限定被相似的名子隐藏的成员public void A(int a, int b )this.a=a;this.b=b;2.将对象作为参数传递到函数中public void ShowInstance() print(this);console.writeline(lalalalllalalala);3.声明索引器public int thisint paramget return arrayparam; set arrayparam=value; 注意!静态方法,静态属性访问器或字段声明中不能用 this。二.转换关键字:explicit, implicit, operator1explicit:用于声明用户定义的 显式类型转换运算符。例: class MyTypepublic static explicit operator MyType(int i)/从 int 显式转换成 MyType 类型的代码! 显式类型转换符必须通过类型转换调用。需要在转换失败时抛出异常。if(转换失败的条件 )throw new ArgumentException();int i;MyType x = (MyType)i;注意!如果转换可能导致信息丢失,则使用 explicit 关键字。2implicit:用于声明用户定义的 隐式类型转换运算符。例:class MyTypepublic static implicit operator int(MyType i)/从 MyType 隐式转换成 Mint 类型的代码! MyType i;int x = i;注意!由于隐式转换在程序员未指定的情况下发生,所以必须防止出现不良的后果。只有在一定不会出现异常和信息丢失时才可以使用 implicit,否则使用expicit。3operator:用于声明用户在类或结构中自定义的运算符。有四种形式:public static 结果类型 operator unary-operator (参数类型 参数名)public static implict operator 目标类型 (输入类型 参数名 ) public static explict operator 目标类型 (输入类型 参数名) /implict 中,目标类型一般是封闭类型,例如:int, double, byte 等。/explict 中,目标类型一般是自定义类型,例如:MyType 等。三.文字关键字:null,false,true1null:表示不引用任何对象的空引用的值。null 是引用类型的默认值。2true:true 运算符:用户自定义的类型可以重载 true 运算符,用来表示是否满足条件,若满足则返回 bool 值的 true,否则返回 false。注意!若在自定义类型中定义了 true 运算符,则必须定义 false 运算符。true 文字值:表示 bool 的真。3false:false 运算符:用户自定义的类型可以重载 false 运算符,用来表示是否满足条件,若不满足则返回 bool 值的 true,否则返回 false。注意!若在自定义类型中定义了 false 运算符,则必须定义 true 运算符。false 文字值:表示 bool 的假。true 和 false 运算符可以用在任何条件判断中。四.方法参数关键字:params,ref ,out1params:用于指定在参数数目可变处,采用参数的方法参数。只能有一个 params,并且在他后面不能再有参数。方法参数:如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值using System;public class MyClass public static void UseParams(params int list) for (int i = 0 ; i / 声明枚举类/ public class MyEnumeratorint nIndex;MyCollection collection;public MyEnumerator(MyCollection coll)collection = coll;nIndex = -1;public bool MoveNext()nIndex+;return (nIndex = amount)Console.WriteLine(Balance before Withdrawal : + balance);Console.WriteLine(Amount to Withdraw : - + amount);balance = balance - amount;Console.WriteLine(Balance after Withdrawal : + balance);return amount;elsereturn 0; / transaction rejectedpublic void DoTransactions()for (int i = 0; i a = null;(但是只能判断 a 是否等于 null,不能将 null 作为输出,否则引发异常)或 int? a = null;4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。有关值类型默认值的信息。1.bool 关键字1. bool 是 System.Boolean 的别名。2. 转换:不存在 bool 类型与其他任何类型的相互转换。3. If()条件判断时必须是 bool 类型的值。例如:int x = 1; if(x)是错误的。必须将该变量于一个值进行显示比较。2.byte 关键字1.转换:byte x = 10; 合法Int a = 10; byte x = a; 不合法,目标量必须占有更大的存储空间(byte 是目标量) ,除非进行显示类型转换。3.char 关键字4.demical 关键字1.demical 类型具有更高的精度和更小的范围。适用于财务和货币计算。2.如果希望将实数视为 demical 类型。则在后面加上 m 或 M。例如:demical d = 300.01m;5.double 关键字1.默认情况下,等号右边的实数将会被视为 double 类型。但是,要想将整数视为 double 类型,在后面加上 d 或者 D。例如: double d = 3d;6.enum1.enum 关键字用于声明枚举,enum 类型是由一组称为枚举数列表的命名常量组成的特殊类型。2.每种枚举类型均有一组基础类型,此基础类型可以是除 char 类型之外的任何整形。例子: using System;public class EnumTest enum Range :long Max = 2147483648L, Min = 255L;/基础类型是 longstatic void Main() long x = (long)Range.Max; long y = (long)Range.Min;Console.WriteLine(Max = 0, x);Console.WriteLine(Min = 0, y);3.从枚举类型到其他类型需要显示的类型转换(无论基础类型是什么!)。.7.float 关键字1.要想使实数变成 float 类型,后面加上 f.例如:float f = 3.5f; 8.Int 关键字9.long 类型1.要想使整数变成 long 类型,在后面加上 l 或 L。例如:long L = 64L;10.sbyte带符号的 byte 类型。11.short 类型带符号的 16 位整数。12.struct 关键字1.结构类型:是一种值类型,用于封装一组相关变量,可以包含构造函数,常量,字段,方法,属性,索引器,运算符,事件,嵌套类型。结构可以实现接口,但是不能实现继承,其中的成员也不能声明为protected。2. struct 是在 stack 上分配空间。3. 结构类型对具有语意的小型结构尤为有用。4. 声明结构的默认构造函数(就是没有参数的构造函数)是错误的。因为 C#中已经提供了默认构造函数。5. 在结构中初始化实例字段是错误的。13.uint 关键字1.无符号 32 位整数。2.在整数后面加上 u,即可以把整数变成无符号的数,根据其值的大小判断是 uint 还是ulong。14.ulong 关键字1.无符号 64 位整数。15.ushort 关键字1.无符号 16 位整数。九装箱和取消装箱1.装箱1.对值类型装箱会使之变为一个对象,会在 heap(垃圾回收堆)上为其分配存储空间,创建 object 对象,并将其值复制到对象。2.原始值类型和装箱对象使用不同的内存,可以存储不同的值。装箱转换在 heap 上分配存储空间创建新对象,是在 stack 上的 object 引用其值。(boxed)i 和(unboxed)i 存储在不同内存中。class TestBoxing static void Main() int i = 123;object o = i; / implicit boxingi = 456; / change the contents of i System.Console.WriteLine(The value-type value = 0, i);System.Console.WriteLine(The object-type value = 0, o);2.取消装箱进行装箱和取消装箱都会进行大量计算,降低性能。1.取消装箱是将 object 对象装换成值类型。2.取消装箱将执行下列操作:A检查该 object 对象,确保它是要转换成的值类型的一个装箱值。B将 object 对象的值复制到值类型对象中。3.要想成功取消装箱,必须保证:(1)该 object 对象是某个值的引用, null 不行。(2)object 对象必须是在对该值类型的值装箱时创建的。(3)取消装箱必须是显示的。取消装箱转换例子:class TestUnboxingstatic void Main() int i = 123;object o = i; / implicit boxingtry int j = (short) o; / attempt to unboxSystem.Console.WriteLine(Unboxing OK.);catch (System.InvalidCastExcept
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号