【问题标题】:C# Instance Constructor vs Static ConstructorC# 实例构造函数与静态构造函数
【发布时间】:2011-04-19 13:58:00
【问题描述】:

两者有什么区别?我只使用了一种构造函数,我相信它是静态构造函数。只熟悉 C++ 和 Java。

【问题讨论】:

    标签: c# constructor static-constructor


    【解决方案1】:

    第一次引用你的类时调用静态构造函数,即

    MyClass.SomeStaticMethod()
    

    每次执行“MyClass dummy = new MyClass()”时都会调用实例构造函数,即创建类的实例

    语义优先用于当你想确保某个静态状态在被访问之前被初始化,另一个用于初始化实例成员。

    【讨论】:

      【解决方案2】:

      对于类的所有实例或使用,静态构造函数只运行一次。它将在您第一次使用该类时运行。当你实例化一个类的对象时,普通的构造函数就会运行。

      您需要了解的有关静态构造函数的所有信息都可以在这里找到:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

      【讨论】:

        【解决方案3】:

        静态构造函数允许您在类中初始化静态变量,或在代码中首次引用类后执行其他需要在类中执行的操作。每次您的程序运行时,它们只会被调用一次。

        静态构造函数是用这种语法声明的,不能重载或有任何参数,因为它们在你的类被它的名字引用时运行:

        static MyClass()
        {
        }
        

        实例构造函数是在您创建新对象(类的实例)时调用的构造函数。它们也是您通常在 Java 和大多数其他面向对象语言中使用的语言。

        您可以使用这些来为您的新对象提供初始状态。这些可以重载,并且可以带参数:

        public MyClass(int someNumber) : this(someNumber, 0) {}
        
        public MyClass(int someNumber, int someOtherNumber)
        {
            this.someNumber = someNumber;
            this.someOtherNumber = someOtherNumber;
        }
        

        调用代码:

        MyClass myObject = new MyClass(100, 5);
        

        【讨论】:

          猜你喜欢
          • 2013-03-05
          • 2014-09-16
          • 1970-01-01
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 2011-10-07
          • 2011-03-01
          • 1970-01-01
          相关资源
          最近更新 更多