ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:34.45KB ,
资源ID:4734887      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4734887.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#关键字详解.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#关键字详解.docx

1、C#关键字详解1 第一部分2 访问关键字:base,this3 base访问基类的成员。用于从派生类中访问基类的成员,1.调用基类上已经被重写的方法。2.指定创建派生类实例时应调用的基类构造函数。*对基类的访问只能在 派生类的构造函数 实例的方法 实例的属性访问器 中。属性访问器:get,set函数。注意:!不能在静态方法中使用base关键字。例:在子类的方法中写 base.GetInfo();调用基类的方法。基类中的构造函数重载了,Mybase()和Mybase(int i);在子类的构造函数中public MyDerived():base(int i)public MyDerived(in

2、t 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 param get return arrayparam;

3、 set arrayparam=value; 注意!静态方法,静态属性访问器或字段声明中不能用this。 二.转换关键字:explicit, implicit, operator1explicit:用于声明用户定义的 显式类型转换运算符。例: class MyType public static explicit operator MyType(int i) /从int显式转换成MyType类型的代码! 显式类型转换符必须通过类型转换调用。需要在转换失败时抛出异常。if(转换失败的条件)throw new ArgumentException();int i;MyType x = (MyType

4、)i;注意!如果转换可能导致信息丢失,则使用explicit关键字。2implicit:用于声明用户定义的 隐式类型转换运算符。例:class MyType public static implicit operator int(MyType i) /从MyType隐式转换成Mint类型的代码! MyType i;int x = i;注意!由于隐式转换在程序员未指定的情况下发生,所以必须防止出现不良的后果。只有在一定不会出现异常和信息丢失时才可以使用implicit,否则使用expicit。3operator:用于声明用户在类或结构中自定义的运算符。有四种形式:public static 结果

5、类型 operator unary-operator (参数类型 参数名)public static implict operator 目标类型 (输入类型 参数名) public static explict operator 目标类型 (输入类型 参数名) /implict中,目标类型一般是封闭类型,例如:int, double, byte等。/explict中,目标类型一般是自定义类型,例如:MyType等。 三.文字关键字:null,false,true1null:表示不引用任何对象的空引用的值。null是引用类型的默认值。2true: true运算符:用户自定义的类型可以重载true

6、运算符,用来表示是否满足条件,若满足则返回bool值的true,否则返回false。注意!若在自定义类型中定义了true运算符,则必须定义false运算符。 true文字值:表示bool的真。3false: false运算符:用户自定义的类型可以重载false运算符,用来表示是否满足条件,若不满足则返回bool值的true,否则返回false。注意!若在自定义类型中定义了false运算符,则必须定义true运算符。 false文字值:表示bool的假。 true和false运算符可以用在任何条件判断中。 四.方法参数关键字:params,ref,out1params:用于指定在参数数目可变处,

7、采用参数的方法参数。只能有一个params,并且在他后面不能再有参数。方法参数:如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值using System;public class MyClass public static void UseParams(params int list) for (int i = 0 ; i list.Length; i+) Console.WriteLine(listi); Console.WriteLine(); public static void UseParam

8、s2(params object list) for (int i = 0 ; i list.Length; i+) Console.WriteLine(listi); Console.WriteLine(); static void Main() UseParams(1, 2, 3); UseParams2(1, a, test); / An array of objects can also be passed, as long as / the array type matches the method being called. int myarray = new int3 10,11

9、,12; UseParams(myarray); 输出 1231atest101112/把1,2,3三个参数当成一个数组处理,在最后输出Console.WriteLine();2ref:使方法可以引用传递到该方法的参数。当程序跳转到调用方法处的时候,在方法中对参数所做的任何改动都将传递给参数。类似于传地址。注意!必须将参数作为ref参数 显示 的传递到方法。参数必须显示的初始化!属性不是变量不能作为ref参数传递。例子:using System;using System.Collections.Generic;using System.Text;namespace 真的是关键字 class P

10、rogram public static void TestRef(ref string i) i = change once!; public static void TestNoRef(string i) i = change twice!; static void Main(string args) string i = begining!; Console.WriteLine(i); TestRef(ref i); Console.WriteLine(i); TestNoRef(i); Console.WriteLine(i); Console.ReadLine(); 输出:begin

11、ning! Change once! Change once!3.out:使方法可以引用传递到该方法的同一个变量。当程序跳转到方法调用处时,在方法中对变量所做的任何改动都将传递给该变量。注意!当希望方法返回多个值时,声明out非常有用。 一个方法可以有多个out参数。 必须将参数作为out参数显示的传递到方法。 不必初始化作为out参数的变量。 属性不是变量不能作为out变量。注意!ref参数必须显示初始化,而out参数不用。例子:using System;using System.Collections.Generic;using System.Text;namespace 真的是关键字 c

12、lass Program public static int TestOut(out string i) i = change once!; return -1; static void Main(string args) string i = begining!; Console.WriteLine(i); Console.WriteLine(TestOut(out i); Console.WriteLine(i); Console.ReadLine(); 5.修饰关键字修饰符 作用访问修饰符PublicPrivateInternalprotected 指定声明的类型和成员的可访问性abst

13、ract 指示某个类只能是其他类的基类,虚基类。Const 指定无法修改字段或局部变量的值,只能在声明时初始化。Event 声明一个事件Extern 指示外部实现此方法Override 提供从基类继承的 虚拟成员 的新实现Readonly 声明的字段只能在声明时或构造函数中初始化。 Sealed 指定该类不能被继承Static 声明对象属于类本身不属于特定的对象。Unsafe 声明不安全的上下文Virtual 在派生类中实现具体方法,可以重写。Volatile 指示字段可以由操作系统,硬件或并发的线程等在程序中修改。1.访问关键字声明的可访问性 意义public 访问不受限制Protected

14、 访问仅限于包含类或从包含类派生的类Internal 访问仅限于当前项目Protected internal 访问仅限于包含类或从包含类派生的当前项目和类Private 访问仅限于包含类不嵌套在其他类型中的顶级类型只能有public和internal可访问性,默认是internal。类型 默认的成员可访问性 允许的访问性枚举 Public 无(internal)PublicProtected类 Private InternalPrivateProtected internal接口 Public 无(internal)Public结构 Private InternalPrivate嵌套类型的可访

15、问性取决于它的可访问域,而且不能超出包含它类型的可访问域。 2.可访问域1.可访问域:用于指定程序段中可以引用该成员的位置。如果是嵌套类型,那么它的可访问域由成员的访问级别和直接包含该成员的类型的可访问域共同决定。using System;using System.Collections.Generic;using System.Text;namespace 真的是关键字 public class T1 public static int publicInt; internal static int internalInt; private static int privateInt = 0;

16、 / CS0414 public class M1 public static int publicInt; internal static int internalInt; private static int privateInt = 0; / CS0414 private class M2 public static int publicInt = 0; internal static int internalInt = 0; private static int privateInt = 0; / CS0414 class MainClass static void Main() /

17、Access is unlimited: T1.publicInt = 1; / Accessible only in current assembly: T1.internalInt = 2; / Error: inaccessible outside T1: / T1.myPrivateInt = 3; / Access is unlimited: T1.M1.publicInt = 1; / Accessible only in current assembly: T1.M1.internalInt = 2; / Error: inaccessible outside M1: / T1.

18、M1.myPrivateInt = 3; / Error: inaccessible outside T1: / T1.M2.myPublicInt = 1; / Error: inaccessible outside T1: / T1.M2.myInternalInt = 2; / Error: inaccessible outside M2: / T1.M2.myPrivateInt = 3; 3.对使用可访问性级别的限制1基类的可访问性必须不小于派生类。2派生类的可访问性必须不大于基类。3成员的可访问性至少是包含它的类。例子:Class BaseClass;Public class My

19、Class: BaseClass;这是错误的!对使用声明的而访问型级别限制上下文 备注类 类类型的直接基类必须至少与类类型本身具有同样的可访问性。接口 接口类型的显式基类接口必须至少与接口类型具有同样的可访问性。委托 返回类型和参数类型必须至少与委托本身具有同样的可访问性。方法 返回类型和参数类型必须至少与方法本身具有同样的可访问性。运算符 返回类型和参数类型必须至少与运算符本身具有同样的可访问性。构造函数 它的参数必须至少与构造函数本身具有同样的可访问性。字段(它是包含在类或结构中的对象或值) 字段的可访问性必须至少与字段本身具有同样的可访问性。 4.访问修饰关键字1internal:是类型

20、和类型成员的访问修饰符,只有在同一个程序集中才可以访问。通俗的说就是:如果用internal修饰,那么只能在定义它的.cs文件中访问它。在别的文件中访问就会出错。 5其它修饰关键字1abstract:可用来修饰 类,方法和属性。(1) 在类的声明中使用abstract,表示这个类只能作为其他类的基类,即抽象类。 抽象类的特点:a抽象类不能实例化。 b.抽象类可以包含抽象方法和抽象访问器。 c.不能用sealed修饰抽象类,否则,该类不能被继承。 d.从抽象类派生的非抽象类必须包含继承来的所有抽象方法和抽象访问器的实实现。(2) 在方法和属性中使用abstract,表示此方法或属性 不包含实现。

21、即抽象方法和抽象属性。抽象方法的特点:A 抽象方法是隐式的virtual方法。B 只允许在抽象类中定义抽象方法。C 抽象方法不提供实现,所以没有方法体。 格式如下:没有! Public abstract void MyMethod();D 实现由重写方法提供,他是非抽象的。E 抽象方法中使用virtual, static, override关键字是错误的。F 静态属性上不能使用abstract关键字。G 在派生类中,通过使用override 可以重写抽象的继承属性。H 抽象类必须为所有接口成员提供实现,或将其映射到抽象方法上去。 / abstract_keyword.cs/ Abstract

22、Classesusing System;abstract class BaseClass / Abstract class protected int _x = 100; protected int _y = 150; public abstract void AbstractMethod(); /Abstract methodpublic abstract int X get; /abstract property public abstract int Y get; class DerivedClass : BaseClass public override void AbstractMe

23、thod() _x+; _y+; public override int X / overriding property get return _x + 10; public override int Y / overriding property get return _y + 10; static void Main() DerivedClass o = new DerivedClass(); o.AbstractMethod(); Console.WriteLine(x = 0, y = 1, o.X, o.Y); 输出 x = 111, y = 161 2.const:用来指定字段或局

24、部变量的之不能被修改。Public const int a=1,b=2;3.event:用于指定一个事件。指定当代码中的某些事件发生时调用的委托。此委托可以有一个或多个相关联的方法。创建事件的步骤:1. 创建或标示一个委托。先有委托后定义事件。2. 创建一个类,其中包含:A 委托创建的事件。B 调用此事件的方法。3. 定义将方法连接到事件的类。4. 使用事件:创建包含事件声明类的对象。4extern:表示方法在外部实现。注意!不能将extern和abstract一起使用。格式举例:public static extern int MyMethod (int x); 没有 5override:用

25、于修改方法和属性,通过 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。重写基方法:有重写声明的方法。注意!不能重写非虚方法或静态方法。 不能使用以下关键字修饰重写方法:new,static,virtual,abstract 重写的属性与重写的方法的要求是一样的。 重写的方法中可以调用基类的原来的virtual方法。namespace 真的是关键字 public class Square public double x; public Square(double x) this.x = x; public virtual double

26、Area() return (x*x); class Cube : Square public Cube(double x):base(x) public override double Area() return (6*base.Area();/调用base即基类的方法。 class MainClass static void Main() double x = 5.2; Square s = new Square(x); Square c = new Cube(x); Console.WriteLine(Area of Square is0:F2,s.Area(); Console.Wri

27、teLine(Area of Cube is 0:F2, c.Area(); Console.ReadLine(); 6.readonly:只可以使用在字段上,被readonly修饰的字段的赋值只能作为 声明的一部分或者在构造函数中。 1.在声明中初始化:public readonly double a=1.1; 2.在构造函数中。readonly 关键字与 const 关键字不同:const 字段只能在该字段的声明中初始化。readonly段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段为编译时常数,而 readonl

28、y 字段可用于运行时常数。using System;public class ReadOnlyTest class SampleClass public int x; / Initialize a readonly field public readonly int y = 25; public readonly int z; public SampleClass() / Initialize a readonly instance field z = 24; public SampleClass(int p1, int p2, int p3) x = p1; y = p2; z = p3; static void Main() SampleClass p1 = new SampleClass(11, 21, 32); / OK Console.WriteLine(p1: x=0, y=1, z=2, p1.x, p1.y, p1.z); SampleClass p2 = new SampleClass(); p2.x = 55; / OK Console.WriteLine(p2: x=0, y=1, z=2, p2.x, p2.y, p2.z); 输出p1: x=11,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1