2つの違いは何ですか?私は1種類のコンストラクターしか使用していませんが、それは静的コンストラクターだと思います。C++ と Java のみに精通している。
3 に答える
静的コンストラクターは、クラスが初めて参照されたときに呼び出されます。
MyClass.SomeStaticMethod()
' ' を実行するたびに、インスタンス コンストラクターが呼び出されます。MyClass dummy = new MyClass()
つまり、クラスのインスタンスを作成します。
意味的に最初に使用されるのは、アクセスされる前に静的状態が初期化されるようにする場合であり、もう一方はインスタンス メンバーを初期化するために使用されます。
静的コンストラクターを使用すると、クラス内の静的変数を初期化したり、コードで最初に参照された後にクラスで必要な他のことを実行したりできます。これらは、プログラムが実行されるたびに 1 回だけ呼び出されます。
静的コンストラクターはこの構文で宣言され、クラスがその名前で参照されているときに実行されるため、オーバーロードしたりパラメーターを指定したりすることはできません。
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);
静的コンストラクターは、クラスのすべてのインスタンスまたは使用に対して 1 回だけ実行されます。クラスを初めて使用するときに実行されます。クラスのオブジェクトをインスタンス化すると、通常のコンストラクターが実行されます。
静的コンストラクターについて知っておくべきことはすべて、https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors で見つけることができます。