目前个人总结为如下:
1、执行子类静态成员初始化语句(static private ...);
2、执行子类静态构造函数(static ClassFunc( ) );
3、执行子类实例成员初始化语句(private ...);
4、{
(1)执行父类静态成员初始化语句;
(2)执行父类静态构造函数;
(3)执行父类实例成员初始化语句;
(4){.......{.......}.......}
(5)执行父类实例构造函数;
}
5、执行子类实例构造函数(public ClassFunc() );
可以使用如下程序进行验证:
using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
namespace Execution
{
class Program
{
static void Main(string[] args)
{
Child child = new Child();
Console.ReadLine();
}
}
class Grand
{
public Grand()
{
Console.WriteLine("$ 爷类实例构造方法");
}
static Grand()
{
Console.WriteLine("$ 爷类静态构造方法");
}
private ShowMessage NewClassGrand1=new ShowMessage("$ 爷类实例成员对象");
static private ShowMessage NewClassGrand2= new ShowMessage("$ 爷类静态成员对象");
}
class Father:Grand
{
public Father()
{
Console.WriteLine("# 父类实例构造方法");
}
static Father()
{
Console.WriteLine("# 父类静态构造方法");
}
private ShowMessage NewClassFather1 = new ShowMessage("# 父类实例成员对象");
static private ShowMessage NewClassFather2 = new ShowMessage("# 父类静态成员对象");
}
class Child:Father
{
public Child()
{
Console.WriteLine("* 子类实例构造方法");
}
static Child()
{
Console.WriteLine("* 子类静态构造方法");
}
private ShowMessage NewClassChild1 = new ShowMessage("* 子类实例成员对象");
static private ShowMessage NewClassChild2 = new ShowMessage("* 子类静态成员对象");
}
class ShowMessage//用输出字符串来展示执行了该部分
{
public ShowMessage(string input)
{
Console.WriteLine(input);
}
}
}
运行结果如下图: