仮想静的メソッドと抽象静的メソッド: 詳細な説明
プロバイダーを使用する場合、次のような抽象クラスが必要になる場合があります。抽象静的メソッド。これは論理的に見えるかもしれませんが、C# での実装を妨げる根本的な問題があります。
静的メソッドについて
静的メソッドはインスタンス化されません。オブジェクト参照なしでアクセスできます。これらは、オブジェクト インスタンスではなく、クラス名を通じて呼び出されます。中間言語 (IL) コードは、抽象メソッドを使用したクラスではなく、それを定義したクラスの名前を使用して抽象メソッドを呼び出します。
なぜ抽象静的メソッドがないのですか?
仮想メソッドは、さまざまなタイプのオブジェクトを保持できる変数を操作する場合にのみ役立ち、実行時に変数内のオブジェクトの正しいメソッドを呼び出すことができます。ただし、静的メソッドにはコンパイル時に判明するクラス名が必要です。これは、呼び出す正確なメソッドが固定されており、動的に決定できないことを意味し、仮想/抽象静的メソッドは不要になります。
例
次のコードを考えてみましょう:
public class A { public static void Test() { // Method body } } public class B : A { // Call A.Test() by default }
Main メソッドから B.Test() を呼び出すと、実際の IL コードがコンパイルされて呼び出されます。 A.Test() は定義クラスであるためです。参照されるオブジェクトに関係なく、常に同じメソッドに対して実行されるため、呼び出しは非仮想的なままになります。
結論
静的メソッドの性質によりC# では、それらが非仮想であり、クラス名を通じて呼び出される場合、仮想/抽象静的メソッドの概念は適用されません。これらのメソッドは .NET Framework ではサポートされていません。
以上がC# ではなぜ抽象静的メソッドを使用できないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。