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()

本文探讨了C#中对象实例化的顺序规则,包括静态与非静态成员的初始化顺序,以及静态构造函数的特点与限制。通过具体案例展示了不同情况下实例化顺序的变化。
217

被折叠的 条评论
为什么被折叠?



