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