静态和默认构造函数

5

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

这两个构造函数有什么区别?我何时应该只选择静态或静态与默认构造函数?

3个回答

11

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

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


3

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


1

当所有人都离开派对后再闯入...

两个答案都是正确的,我只想添加这个链接:静态构造函数(C#编程指南)

引用他们的话:

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

它们的属性:

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

您可以转到上面的链接查看演示和示例代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接