您的位置:首页 > 教程文章 > 编程开发

c#构造初始化的顺序浅析

:0 :2021-04-22 19:34:37

这个很基础的知识,但我至今才意识到它。想想也很失败。
直接上代码:很简单
public class Base
{
int i=0;
public Base()
{
System.Console.WriteLine(我是基类构造器);
}
}
class Program
{
static void Main(string[] args)
{
Base d = new Base();
}
}
对于上面的代码。是先执行构造器,还是先初使化字段 i 变量呢?其实只要意识到这个问题,也就很容易试出来,它应当是先初使化字段 i 变量。
那么现在如果Base 派生出一个子类,那它的构造顺序又是怎么样的呢?
///


/// 基类
///

public class Base
{
public int baseint = 100;
public Base()
{
System.Console.WriteLine(构造器:我是基类构造器);
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(字段:我是基类Inner);
}
}
///
/// 字段初使化
///

private Inner inner = new Inner();
}
///
/// 子类
///

class Derived : Base
{
public Derived()
{
System.Console.WriteLine(构造器:我是子类构造器);
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(字段:我是子类Inner);
}
}
///
/// 字段初使化
///

private Inner inner = new Inner();
}
所以说它的执行顺序为:子类字段-父类字段-父类构造器-子类构造器

C#枚举数值与名称的转换实例
C#中无边框窗体移动的简单实例

同类资源