静的呼び出しに関する疑問に答えてください:
しかし、インスタンスがなく、静的メンバーのみが関与しているため、各静的呼び出しは互いに独立していると聞きました。そうですか?– スリ・クマール 36分前
クラスの「グローバル」インスタンスがあり、すべての静的メソッドがこのインスタンスによって保持されていると考えることができます。
あなたの例のように、を呼び出して「ユーザー」インスタンスを作成できますClassA myA = new ClassA()
。一方、ランタイムによって作成されますが、ユーザーには見えない「グローバル」インスタンスがあり、静的メソッドはこのインスタンスに存在します。この「グローバル」インスタンス内のインスタンス メソッドとしての静的メソッドの動作。
驚くべきことに、C# には、「グローバル」インスタンスがランタイムによって初期化されるときに呼び出される静的コンストラクターがあります。
このコードをテストできます:
class A
{
static A() {
Console.WriteLine("Creating the global instance of class A....");
}
public static void displayName()
{
Console.WriteLine("myName");
}
public static void displayAge()
{
Console.WriteLine("myAge");
}
}
class B
{
public void Foo()
{
A.displayName();
A.displayAge();
}
}
出力は次のようになります。
Creating the global instance of class A....
myName
myAge
これとは別に、静的メソッドにはインスタンス メソッドとの違いはありません。
各静的メソッドの変数には独自のスコープがあり、メソッドごとに独立しています。