【问题标题】:Static and default constructor静态和默认构造函数
【发布时间】:2011-02-20 09:52:42
【问题描述】:

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

这两个构造函数有什么区别?我什么时候应该只使用默认构造函数的静态或静态?

【问题讨论】:

    标签: .net constructor


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        在所有人都离开后破坏派对......

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

        引用他们:

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

        它们的属性:

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

        您可以前往以上链接查看演示和示例代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-24
          • 2020-05-14
          • 2011-03-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多