静态类延迟字段初始化
本文关键字:初始化 字段 延迟 静态类 | 更新日期: 2023-09-27 18:26:20
简而言之,我想知道是否有一种方法可以延迟类中静态字段的初始化。
在设置其他值之前,我无法创建某个类的实例。一个例子:
private void Form1_Load(object sender, EventArgs e)
{
Foo.Init();
// initialize static Bar fields
}
下面,Bar
实例需要在Foo.Init()
中设置一些值。
public static class Bars
{
public static Bar bar = new Bar();
}
这将不起作用,因为Bar
字段是在执行Foo.Init()
之前实例化的。
我能想到的唯一解决方案是类似的东西
public static class Bars
{
public static Bar bar;
public static void Init()
{
bar = new Bar();
}
}
并在CCD_ 6之后运行CCD_。
这是解决问题的唯一方法吗?
您可以init使用静态构造函数的静态类:
public static class Foo
{
public static int Result { get; set; }
static Foo()
{
Result = -1;
}
}
阅读更多此处
类似这样的东西:
private static Bar bar;
public static Bar Bar
{
get
{
bar = bar ?? new Bar();
return bar;
}
}