非静态类中的静态构造函数的功能是什么?

年龄

我注意到非静态类可以具有静态构造函数:

public class Thing
{
    public Thing()
    {
        Console.WriteLine("non-static");
    }

    static Thing()
    {
        Console.WriteLine("static");
    }
}

并且在初始化时,Thing将首先调用静态构造函数的实例

输出:

静态的

非静态

这有什么需要?您是否使用它来初始化非静态类型实例上的静态字段?

使用静态构造函数时有什么要考虑的吗?

时钟

您是否使用它来初始化非静态类型实例上的静态字段?

除了静态字段(或任何类型的静态成员)不与实例相关联外,其他内容几乎相同。它们与类型本身相关联,而不管它是静态类还是非静态类。

文档列出了静态构造函数的一些属性,其中之一是:

  • 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。

在此,“在...之前”是指“在...之前”,并且其中任何一种首先发生。这是因为静态构造函数在单个程序执行中每个类型仅被调用一次。


使用静态构造函数时有什么要考虑的吗?

这是上面链接给出的完整列表,它应该使您了解使用静态构造函数时的期望:

  • 静态构造函数不使用访问修饰符或具有参数。

  • 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。

  • 静态构造函数不能直接调用。

  • 用户无法控制何时在程序中执行静态构造函数。

  • 静态构造函数的典型用法是当类使用日志文件并且构造函数用于将条目写入此文件时。

  • 当为非托管代码创建包装器类时,构造函数可以调用该LoadLibrary方法时,静态构造函数也很有用

  • 如果静态构造函数引发异常,则运行时不会再次调用该异常,并且该类型将在程序运行所在的应用程序域的生存期内保持未初始化状态。

除了确保您不尝试访问非静态成员之外,因为您不在实例构造函数中,所以还必须考虑的另一件事是,在程序执行期间始终在特定时间调用静态构造函数。如前所述,除了控制“何时创建第一个实例或引用任何静态成员”之外,您无法控制它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

非静态类中的静态构造函数的功能是什么?

来自分类Dev

为什么不调用基类中的静态构造函数?

来自分类Dev

在静态构造函数中初始化静态变量而不是直接赋值的好处是什么?

来自分类Dev

为什么在调用非静态方法时会调用结构中的静态构造函数?

来自分类Dev

为什么允许在非静态构造函数中为静态只读字段对象定义SendCompletedEventHandler?

来自分类Dev

在构造函数中增加静态类变量

来自分类Dev

babeljs类在构造函数中为静态

来自分类Dev

在Express中,“静态”和“非静态”是什么意思?

来自分类Dev

C ++ 11:使用非静态成员函数作为类构造函数中的默认参数

来自分类Dev

C ++,在类构造函数中传递非静态函数指针

来自分类Dev

在静态方法中实例化非静态类(上下文),构造函数以对象类型为参数

来自分类Dev

静态类,静态构造函数和静态属性

来自分类Dev

为什么我们不能在构造函数中创建非静态自引用对象

来自分类Dev

为什么我们不能在构造函数中创建非静态自引用对象

来自分类Dev

为什么不调用我的基类中的静态构造函数?

来自分类Dev

如何在JAVA中获得静态构造函数的功能?

来自分类Dev

静态或非静态类?

来自分类Dev

在静态容器中包装非静态类

来自分类Dev

PHP类和构造函数中的静态属性

来自分类Dev

Dart中的静态构造函数

来自分类Dev

具有非托管静态实例的静态类的最佳模式是什么?

来自分类Dev

静态构造函数和私有构造函数之间的主要区别是什么?

来自分类Dev

我可以在C#中创建非静态Azure函数类吗,会有什么后果?

来自分类Dev

在非静态块之前调用构造函数?

来自分类Dev

静态基础构造函数的设计模式,该模型在最终类中调用静态方法

来自分类Dev

Java内部静态类的构造函数?

来自分类Dev

了解类构造函数的静态转换

来自分类Dev

静态函数对类构造的好处

来自分类Dev

类构造函数或静态对象返回方法?

Related 相关文章

  1. 1

    非静态类中的静态构造函数的功能是什么?

  2. 2

    为什么不调用基类中的静态构造函数?

  3. 3

    在静态构造函数中初始化静态变量而不是直接赋值的好处是什么?

  4. 4

    为什么在调用非静态方法时会调用结构中的静态构造函数?

  5. 5

    为什么允许在非静态构造函数中为静态只读字段对象定义SendCompletedEventHandler?

  6. 6

    在构造函数中增加静态类变量

  7. 7

    babeljs类在构造函数中为静态

  8. 8

    在Express中,“静态”和“非静态”是什么意思?

  9. 9

    C ++ 11:使用非静态成员函数作为类构造函数中的默认参数

  10. 10

    C ++,在类构造函数中传递非静态函数指针

  11. 11

    在静态方法中实例化非静态类(上下文),构造函数以对象类型为参数

  12. 12

    静态类,静态构造函数和静态属性

  13. 13

    为什么我们不能在构造函数中创建非静态自引用对象

  14. 14

    为什么我们不能在构造函数中创建非静态自引用对象

  15. 15

    为什么不调用我的基类中的静态构造函数?

  16. 16

    如何在JAVA中获得静态构造函数的功能?

  17. 17

    静态或非静态类?

  18. 18

    在静态容器中包装非静态类

  19. 19

    PHP类和构造函数中的静态属性

  20. 20

    Dart中的静态构造函数

  21. 21

    具有非托管静态实例的静态类的最佳模式是什么?

  22. 22

    静态构造函数和私有构造函数之间的主要区别是什么?

  23. 23

    我可以在C#中创建非静态Azure函数类吗,会有什么后果?

  24. 24

    在非静态块之前调用构造函数?

  25. 25

    静态基础构造函数的设计模式,该模型在最终类中调用静态方法

  26. 26

    Java内部静态类的构造函数?

  27. 27

    了解类构造函数的静态转换

  28. 28

    静态函数对类构造的好处

  29. 29

    类构造函数或静态对象返回方法?

热门标签

归档