在运行时初始化抽象类中的静态字段

时间:2017-10-13 22:30:21

标签: c#

我需要初始化一个可以从类的许多实例访问的字段。初始化需要一些计算,并且将有数百万个实例,因此我需要初始化仅发生一次,并且要在所有实例之间共享变量以节省内存。最后,我想在抽象类中实现这一点。

如何在运行时初始化由my_val计算的静态变量CalculateMyVal()

abstract class MyAbstract
{
    static readonly int my_val;
    int CalculateMyVal()
    {
        int x = 1;
        // Long Calculation on x
        return x;
    }
}

1 个答案:

答案 0 :(得分:5)

如果要初始化静态变量,可以使用static constructor

    public abstract class MyAbstract
    {
        static readonly int my_val;
        static MyAbstract()
        {
            my_val = CalculateMyVal();
        }

        static int CalculateMyVal()
        {
            int x = 1;
            // Long Calculation on x
            return x;
        }
    }