当在C#中被称为静态构造函数?(When is a static constructor calle

2019-07-18 08:12发布

当我有含有静态构造类,是构造调用时首次加载包含类的组件时,或者当第一次引用该类被击中?

Answer 1:

当类首次访问。

静态构造函数(C#编程指南)

静态构造用于初始化任何静态数据,或者执行需要仅一次执行的特定动作。 在创建第一个实例之前,它会自动调用或任何静态成员被引用。



Answer 2:

如你所料,尽管简单的文档,这不是一件简单的事情。 乔恩斯基特的文章http://csharpindepth.com/Articles/General/Beforefieldinit.aspx进入详细这个问题。

摘要:

静态构造是保证将第一参考该类别的成员之前立即执行-无论是创建实例或类的自己的静态方法/属性的。

需要注意的是静态initilaizers(如果没有静态构造)保证第一参考特定字段之前要执行的任何时间



Answer 3:

您在课堂上使用任何事情之前的静态构造函数被调用,但出现这种情况什么时候达到实现。

它是保证被称为第一静态成员访问之前,并创建第一个实例之前。 如果从未使用过类,静态构造函数不能保证在所有被调用。



Answer 4:

如果静态方法是从父类调用,静态构造函数将不会被调用,althogh被明确指定。 下面是一个实施例B的构造不调用如果b.methoda()被调用。

static void Main(string[] args)
{
    b.methoda();
}

class a
{
    public static void methoda()
    {
        //using initialized method data
    }
}

class b : a
{
    static b()
    {
        //some initialization
    }
}    


Answer 5:

似乎有与别处回答,但花了一段时间来消化成简单的解释静态构造一个疑难杂症。 所有的文档和解释权利要求的静态构造函数/ intializers的“保证”第一类实例化或第一静态字段引用之前运行。 在疑难杂症来当你试图将一个静态单中创建自己的一个实例(鸡/蛋)类英寸 在这种情况下,静态构造函数结束的实例构造之后被称为 - 在我的情况的实例构造载有一些静态数据依赖的代码。

实例构造后调用静态构造函数?

静态构造函数可以在非静态构造函数之后运行。 这是一个编译器错误?

(对我来说,答案是把单在一个单独的类或手动之前,需要它在构造函数初始化静态数据)



文章来源: When is a static constructor called in C#?
标签: c# static