[科普]C执行顺序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C# 类的初始化顺序

继承类的static数据成员的初始化器,

继承类的static构造器 (在类名, 第一次被引用时, 调用, 如果, 没有这个构造器, 则static数据成员何时被初始化, 是不可预测的)

继承类的实例型数据成员的初始化器

在执行继承类的构造器的内容之前;

基类的static数据成员的初始化器即 static int a = 1;

/// 类数据成员的定义

基类的static 构造器 ,(如果,基类的类名, 先于继承类被引用, 则先执行基类的static构造器)

基类的实例型数据成员的初始化器

基类的构造器

接着执行继承类的构造器的内容;

Example :

public class Base

{

A: private static int Number = 12;

B: private int localNumner = 1;

C: static Base()

{

///

}

D: public Base()

{

}

}

public class Child : Base

{

E: private static int ChildNumber = 14;

F: private int local_child_number = 7;

G: static Child()

{

///

}

H: public Child()

{

I: ///

}

}

Child child = new Child();

初始化顺序为

E G

F H A C B D I;

static构造器的调用时刻是, 第一次引用该类的类名;

public class Test

{

static Test()

{

}

public staitc int Account

{

get

{

return 1;

}

}

/// 只是举例

public static int GetAccount()

{

return 1;

}

public class Nested

{

}

public delegate void Add();

}

当 X1: Test.Account();

X2: Test a = new Test();

X3: Test.GetAccount();

X4: Test.Nested p = new Test.Nested();

X5: Test.Add a = new Add(someMethods);

{ X1, X2, X3, X4, X5 }, 只要第一次出现其中的某一个; 就调用Test的

static构造器

欢迎您的下载,资料仅供参考!

相关文档
最新文档