静态类 - 延迟字段初始化

时间:2014-10-13 20:48:07

标签: c#

简而言之,我想知道是否有办法延迟类中静态字段的初始化。

在设置其他值之前,我无法创建某个类的实例。一个例子:

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(); } } 字段实例化后,这项工作无法完成。

我能想到的唯一解决方案就像是

Bars.Init()

并在Foo.Init()之后运行{{1}}。

这是解决问题的唯一方法吗?

2 个答案:

答案 0 :(得分:1)

你可以使用静态构造函数 init 静态类:

public static class Foo
{
    public static int Result { get; set; }

    static Foo()
    {
        Result = -1;
    }
}

了解更多Here

答案 1 :(得分:0)

类似的东西:

private static Bar bar;
public static Bar Bar
{
    get
    {
        bar = bar ?? new Bar();
        return bar;
    }
}