顺序如下
静态变量:静态变量在类第一次被加载时初始化。这是在任何静态构造函数或静态代码块执行之前完成的。
静态构造函数(Java中是静态代码块):静态构造函数在静态变量和静态代码块执行完毕之后执行。静态构造函数只在类第一次被加载时执行一次。
普通变量:普通变量在每次创建类的实例时初始化。这是在普通构造函数执行之前完成的。
普通构造函数:普通构造函数在普通变量初始化之后执行。每次创建类的实例时都会执行一次普通构造函数。
综上,执行顺序如下:
静态变量初始化
静态构造函数执行
普通变量初始化(每次创建实例时)
普通构造函数执行(每次创建实例时)
以下是一个示例代码,展示了执行顺序:
using System;
class MyClass
{
// 静态变量
static int staticVar = InitStaticVar();
// 静态构造函数
static MyClass()
{
Console.WriteLine("静态构造函数执行");
}
// 实例变量
int instanceVar = InitInstanceVar();
// 实例构造函数
public MyClass()
{
Console.WriteLine("实例构造函数执行");
}
static int InitStaticVar()
{
Console.WriteLine("静态变量初始化");
return 0;
}
int InitInstanceVar()
{
Console.WriteLine("实例变量初始化");
return 0;
}
}
class Program
{
static void Main()
{
// 第一次访问 MyClass 会触发静态成员的初始化
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
}
}
运行以上代码的输出顺序为:
静态变量初始化
静态构造函数执行
普通变量初始化
普通构造函数执行
普通变量初始化
普通构造函数执行