クラスに静的メソッドのみが含まれている場合、クラスの静的メソッドを利用するには、クラスのオブジェクトを作成する必要がありますか?
例えば。クラスMyClass
に静的メソッドのみが含まれている場合、次のうちどれが優先されますか?
MyClass.MyStaticMethod(3);
また
MyClass mc = new MyClass();
mc.MyStaticMethod(3);
それらが静的である場合、インスタンスは必要ありません。C# ではこれを行うことはできません (正しくは、Java で行うことができますが、混乱を招くことをお勧めします)。
インスタンスをインスタンス化できる場合、私はその解決策に傾倒します。状態を維持するためにメソッドを拡張する必要がある場合は、これらのメソッドを静的にすることで、自分自身を悩ませることになります。
次のように静的メソッドを呼び出すことはできません。
MyClass mc = new MyClass();
mc.MyStaticMethod(3);
コンパイルされません。静的メソッドを呼び出すことができる唯一の方法は、それらが実装されているクラスの外部で呼び出された場合に型名を前に付けることです。
だからあなたはそれらを呼び出すことができますMyClass.MyStaticMethod(3);
MyClass.MyStaticMethod(3); is preferred.
また、クラスを静的として宣言して、誤ってインスタンス化されないようにし、使用目的が明確になるようにします。
public static MyClass
{
public static Property {get;set;}
public static MyMethod() { .... }
}
他の人が答えで言ったことに反して:
クラス インスタンスで静的メソッドを呼び出すことはできません。これにより、コンパイラ エラーが発生します。
選択肢が1つしかないので、それはあなたの質問をちょっと無意味にします:
MyClass.MyStaticMethod(3);
私見では 、
クラスに静的メソッド + インスタンス メソッドがあり、静的メソッドのみが使用されると思われる場合は、コードのリファクタリングを行い、「Extract CLass」リファクタリングを使用してクラスを生成し、静的にして使用することをお勧めします。静的メソッドの数が重要な場合は、静的メソッドをインスタンス メソッドで混乱させるのではなく、この静的クラスを使用します。
クラスに静的メソッドのみが含まれている場合は、クラスも静的にすることをお勧めします。
いいえ、インスタンス変数またはメソッドのみを使用する場合、コンストラクターやインスタンスの作成は必要ありません
静的メンバーは、オブジェクトではなくクラス自体に関連付けられています。
オブジェクトを介して静的メンバーにアクセスするのは意味がないため、エラーになります..
クラス自体から静的メンバーにアクセスする必要があります
クラスの側ですべての静的メソッドを宣言している場合は、クラス名を使用してメソッドを呼び出す必要があります。
MyClass.MyStaticMethod(3);
はい、クラスのオブジェクトを作成して静的メソッドを呼び出すことはできません
そのクラスのオブジェクトを作成する必要はありません。クラスに何も含まれていない場合は、静的メソッドを静的クラスとして作成する必要があります。
非静的な他の変数またはメソッドのクラス オブジェクトが必要になります。