2010-05-17 182 views
4

非静态类可以同时具有静态以及默认构造函数。静态和默认构造函数

这两个构造函数有什么区别?我什么时候只能用默认构造函数进行静态或静态?

回答

8

刚刚访问类的第一次实例之前,每个AppDomain都会运行一次静态构造函数。你可以用它来初始化静态变量。

另一方面,每次创建类的新实例时都会运行默认构造函数。在默认构造函数中,您可以初始化实例的非静态字段。

3

静态构造函数只运行一次,无论该类型创建了多少个对象。默认的构造函数将为该构造函数创建的每个实例运行。

0

崩溃党所有人都离开后...

这两个答案都是正确的,只是想添加此链接:Static Constructors (C# Programming Guide)

引用它们:

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

它们的性质:

  • 静态构造函数并不需要访问修饰符或有参数。
  • 自动调用静态构造函数以在创建第一个实例或引用任何静态成员之前初始化该类。
  • 无法直接调用静态构造函数。
  • 用户无法控制何时在程序中执行静态构造函数。
  • 静态构造函数的典型用法是当类使用日志文件并使用构造函数将条目写入此文件时。
  • 当构造函数可以调用LoadLibrary方法时,为非托管代码创建包装类时,静态构造函数也很有用。
  • 如果静态构造函数抛出异常,则运行时不会再次调用该类型,并且该类型在运行程序的应用程序域的生命周期中保持未初始化状态。

您可以前往以上链接进行演示和示例代码。