重複の可能性:
c#の静的メソッドとは何ですか?
静的および非静的(インスタンス)メンバーの実際の概念について頭を悩ませることは難しいと感じました。非常に多くのフォーラムから調査した後、ここに質問をすることにしました。
静的メンバーと非静的メンバーの違いは何ですか?
重複の可能性:
c#の静的メソッドとは何ですか?
静的および非静的(インスタンス)メンバーの実際の概念について頭を悩ませることは難しいと感じました。非常に多くのフォーラムから調査した後、ここに質問をすることにしました。
静的メンバーと非静的メンバーの違いは何ですか?
staticメソッドはクラスから直接アクセスできますが、メソッドnon-static(または私が好きなようにインスタンス メソッド) はインスタンスからアクセスする必要があります。そのため、インスタンス メソッドの場合はインスタンス化を行う必要がありますが、静的メソッドの場合は必要ありません。
OOP ではstatic variables、インスタンス変数で格納できない値に使用されます。static methodsクラス内のインスタンス メソッドまたは変数にはアクセスできません。もちろん、その静的メソッドは参照しようとしているクラスのインスタンスを認識していないため、これは理にかなっています。
たとえば、クラスのインスタンスがいくつ存在するかを数えたいとしますか? それを単一のインスタンスにどのように格納しますか?
参考文献:
staticメンバーはクラスごとに1つですが、非静的メンバーはインスタンスごとに1つです。
staticメンバーは、それらをカプセル化するクラス名によってアクセスされますが、非静的メンバーはオブジェクト参照によってアクセスされます。
staticメンバーは、オブジェクトをインスタンス化せずに非静的メソッドを使用することはできませんが、非静的メンバーはstaticメンバーを直接使用できます。
static constructor静的フィールドの初期化に使用されますが、非静的フィールドの場合は通常のインスタンスコンストラクターが使用されます。
パフォーマンス関連のポイントについては、こちらをご覧ください。