静态类延迟字段初始化

本文关键字:初始化 字段 延迟 静态类 | 更新日期: 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;
    }
}