反射就是利用 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 修饰
接口和抽象类的异同:
相同点: 都包含有可以有派生类继承的成员,他们都不能直接实例化,但可以申明它们的变量
不同点: