原文地址:http://zhidao.baidu.com/question/71750487.html
C# 类的初始化顺序继承类的static数据成员的初始化器, 继承类的static构造器 (在类名, 第一次被引用时, 调用, 如果, 没有这个构造器, 则static数据成员何时被初始化, 是不可预测的)继承类的实例型数据成员的初始化器在执行继承类的构造器的内容之前; 基类的static数据成员 的初始化器 即 static int a = 1; /// 类数据成员的定义基类的static 构造器 ,(如果,基类的类名, 先于继承类被引用, 则先执行基类的static构造器)基类的实例型数据成员的初始化器基类的构造器接着执行继承类的构造器的内容;
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 类的执行顺序{ public class Parent { static Parent() { Console.WriteLine("Parent Static Constructor"); } public Parent() { Console.WriteLine("Parent Constructor"); } } public class Child : Parent { static Child() { Console.WriteLine("Child Static Constructor"); } public Child() { Console.WriteLine("Child Constructor"); } } class test { static void Main() { Child c1 = new Child(); } }}
public class Parent { static Parent() { Console.WriteLine("Parent Static Constructor"); } public Parent() { Console.WriteLine("Parent Constructor"); } } public class Child:Parent { static public Child instance = new Child(); static Child() { Console.WriteLine("Child Static Constructor"); } public Child() { Console.WriteLine("Child Constructor"); } } public class test { static test() { Console.WriteLine("Main static"); } static void Main() { Child c = new Child(); } }
public class Parent { static Parent() { Console.WriteLine("Parent Static Constructor"); } public Parent() { Console.WriteLine("Parent Constructor"); } } public class Child:Parent { static public Child instance = new Child(); static Child() { Console.WriteLine("Child Static Constructor"); } public Child() { Console.WriteLine("Child Constructor"); } } public class test { static test() { Console.WriteLine("Main static"); } static void Main() { Child c = new Child(); } }
public class Parent { /*Parent Constructor * Parent Static Constructor * Parent Constructor * Child Constructor * Child Static Constructor * Parent Constructor * Child Constructor * */ static public Parent instance = new Parent(); static Parent() { Console.WriteLine("Parent Static Constructor"); } public Parent() { Console.WriteLine("Parent Constructor"); } } public class Child : Parent { static public Child instance = new Child(); static Child() { Console.WriteLine("Child Static Constructor"); } public Child() { Console.WriteLine("Child Constructor"); } } public class test { static void Main() { Child c = new Child(); } }