C# の静的抽象メソッドを理解する
C# の抽象静的メソッドは、開発者の好奇心を高める機能です。プロバイダーを使用しているときに、抽象静的メソッドを使用して抽象クラスを作成したいというシナリオに遭遇する場合があります。この機能がない理由を調べると、より明確な理解が得られます。
静的メソッド: 詳細
静的メソッドは、インスタンス メソッドとは異なり、必要ありません。アクセスするオブジェクトのインスタンス化。これらは、オブジェクト参照ではなく、クラス名を通じて呼び出されます。静的メソッド呼び出し用に生成された中間言語 (IL) コードは、呼び出しクラスに関係なく、メソッドを定義するクラスに直接名前を付けます。
例: メソッド解決
Toこれを説明するには、次のコードを考えてください。
public class A { public static void Test() { } } public class B : A { } class Program { static void Main(string[] args) { B.Test(); } }
B クラスを介してメソッドを呼び出しているにもかかわらず、実際の IL コードは生成されます。
.entrypoint .maxstack 8 L0000: nop L0001: call void ConsoleApplication1.A::Test() L0006: nop L0007: ret
ソース コードでは B.Test が使用されているにもかかわらず、呼び出しが A.Test に対して行われることに注意してください。これは、静的メソッド呼び出しが、呼び出しクラスではなくメソッドを定義するクラスに基づいてコンパイル時に解決されることを示しています。
仮想メソッドと静的呼び出し
Virtualメソッドは、派生クラスで同じメソッドのさまざまな実装を許可することにより、ポリモーフィックな動作を可能にします。ただし、静的呼び出しはクラス名に基づいて特定のメソッドを直接ターゲットにするため、.NET では非仮想的です。したがって、仮想静的メソッドまたは抽象静的メソッドは、C# では実際的な目的を果たしません。
結論
C# の静的メソッドは、次のようなクラス名を通じて呼び出されるためです。ポリモーフィズムがないため、抽象静的メソッドの概念には重要なユースケースがありません。したがって、この言語ではサポートされていません。
以上が抽象静的メソッドが C# でサポートされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。