【发布时间】:2011-04-19 13:58:00
【问题描述】:
两者有什么区别?我只使用了一种构造函数,我相信它是静态构造函数。只熟悉 C++ 和 Java。
【问题讨论】:
标签: c# constructor static-constructor
两者有什么区别?我只使用了一种构造函数,我相信它是静态构造函数。只熟悉 C++ 和 Java。
【问题讨论】:
标签: c# constructor static-constructor
第一次引用你的类时调用静态构造函数,即
MyClass.SomeStaticMethod()
每次执行“MyClass dummy = new MyClass()”时都会调用实例构造函数,即创建类的实例
语义优先用于当你想确保某个静态状态在被访问之前被初始化,另一个用于初始化实例成员。
【讨论】:
对于类的所有实例或使用,静态构造函数只运行一次。它将在您第一次使用该类时运行。当你实例化一个类的对象时,普通的构造函数就会运行。
您需要了解的有关静态构造函数的所有信息都可以在这里找到:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors
【讨论】:
静态构造函数允许您在类中初始化静态变量,或在代码中首次引用类后执行其他需要在类中执行的操作。每次您的程序运行时,它们只会被调用一次。
静态构造函数是用这种语法声明的,不能重载或有任何参数,因为它们在你的类被它的名字引用时运行:
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);
【讨论】: