您的位置:首页 > 编程语言 > C#

C#类成员变量初始化与构造函数执行的顺序

2008-10-31 15:28 369 查看
例子:

class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields() { }
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}

对B实例化后x和y的值分别为: 1,0
------------------------------------
C#类成员变量初始化与构造函数执行的顺序(类成员变量初始化先执行,后执行构造函数)

子类成员变量初始化
父类成员变量初始化
父类构造函数
子类构造函数

----------------------------------------------------------
class Foo
{
public Foo(string s)
{
Console.WriteLine("Foo constructor: {0}", s);
}

public void Bar() { }
}

class Base
{
readonly Foo baseFoo = new Foo("Base initializer");
public Base()
{
Console.WriteLine("Base constructor");
}
}

class Derived : Base
{
readonly Foo derivedFoo = new Foo("Derived initializer.");
public Derived()
{
Console.WriteLine("Derived constructor");
}
}

class Program
{
static void Main(string[] args)
{
new Derived();
}
}
执行结果:



先执行类成员的初始化,顺序是从derived到base,然后是两个构造函数,顺序是从base从derived。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐