background image

反射就是利用 Assembly 的 matedata(元数据)来操作 Assembly 及其所含内容的一种操作,其本质就是

具有可以在一个程序运行的时候去动态分析、生成和操纵对象、类、属性、方法等等的我们的程序的元素

This 关键字:

关键字 this 仅限于在构造函数中、类的方法和类的实例中使用

  

 在类的构造函数中出现的 this 做为一个引用类型,它表示对正在构造对象本身的引用

 在类的方法中出现的 this 作为一个引用类型,它表示对调用该方法的对象的引用

 在结构的构造函数中出现的 this 作为一个值类型,它表示对正在构造的结构的引用

 在结构的方法中出现的 this 作为一个变量类型,它表示对调用该方法的结构的引用

 在任何其他地方使用 this 关键字都是不合法的

代理(delegate):

代理是通过一个指向函数的指针变量(存放函数指针)来灵活调用多个不同功能的方法,它是面向对

象和类型安全的

同一个代理可以调用多个不同的方法,所以使用代理可以在程序运行期调用某个所需的方法 (实例方

法和静态方法)

但使用代理最重要的特征是:代理只是检查要调用的方法是否与代理的标识想匹配,因为代理只能调

用和其定义特征相符的方法,所以代理可以执行匿名方法调用
抽象类与非抽象类的构造函数:

非抽象类的构造函数: public method() : base (){…}

  

抽象类的构造函数 : protected method(): base() {…}

静态构造函熟:

静态构造方法是对整个类进行初始化工作的规定,一个类至多可以有一个静态构造函数:

Static ClassName(){…} 它是自动调用的,不能被显式调用

 静态构造方法总是在该类的所有静态域初始化后而执行
 它总是在该类被使用(如访问静态域,生成实例)之前完成
 

 

最多被执行一次 (但是其执行的具体时间和顺序不确定)

 接口:

 一个类可以继承一个基类,并同时实现一个或多个接口,这时需将各个接口用逗号隔开,并且基类名

必须放在被逗号分隔个接口列表名的首位.如:public class SubClass : BaseClass,Interface1,Interface2,..

 一个类有可能要同时实现多个接口,如果每个接口都定义了同名、同类型的成员,则在类总采用完全

限定名来显式实现各接口中的相应成员,就可以消除歧义

 在使用完全限定名来实现一个接口成员时,在类中该借口成员的实现方法是私有的:

Public interface ISharp

|

public interface ISameble

{

|

{

  Void play();

|

  void play();

}

|

}

实现接口方法 play:  public class test : Isharp, ISameble

{

Void ISharp.play(){…}

Void ISameble.play(){…}

}

注 这两个显式实现的私有成员,不能用 public 修饰
接口和抽象类的异同:

相同点都包含有可以有派生类继承的成员,他们都不能直接实例化,但可以申明它们的变量
不同点