静态和默认构造函数

时间:2010-05-17 13:08:16

标签: .net constructor

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

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

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

每个人离开后都会吵架派对......

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

引用它们:

  

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

他们的属性:

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

您可以访问以上链接获取演示和示例代码。