https://www.cnblogs.com/dirichlet/p/3266019.html?utm_source=itdadao&utm_medium=referral
结论
- 静态构造函数不能有访问修饰符,只能是
static
,且不能带有参数。 - 实例化顺序先静态,后非静态。先成员后构造函数。
- 实例化顺序在
2
的基础上受定义的顺序影响,
示例
case-1
class A
{
public static A a = new A();
public static B b = new B();
static A()
{
Console.WriteLine("static A()");
}
public C c = new C();
public A()
{
Console.WriteLine("A()");
}
}
class B
{
public B()
{
Console.WriteLine("B()");
}
}
class C
{
public C()
{
Console.WriteLine("C()");
}
}
// 实例化结果为:
C()
A()
B()
static A()
C()
A()
case-2
class A
{
// public static A a = new A();
public static B b = new B();
static A()
{
Console.WriteLine("static A()");
}
public C c = new C();
public A()
{
Console.WriteLine("A()");
}
}
class B
{
public B()
{
Console.WriteLine("B()");
}
}
class C
{
public C()
{
Console.WriteLine("C()");
}
}
// 实例化结果为:
B()
static A()
C()
A()