インターフェイス実装における静的メソッドに対する C# の制限を理解する
C# では、いくつかの主な理由により、インターフェイス実装内に静的メソッドを含めることができません。
セマンティックの不一致: インターフェイスはオブジェクトの動作を定義します。 特定のインスタンスから独立して動作する静的メソッドは、この基本原則に矛盾します。 インターフェイスは、共有機能ではなく、個々のオブジェクトの機能を記述します。
契約上の整合性: インターフェイスはクラスの契約として機能します。 静的メソッドを除外すると、一般的な静的抽象化ではなく、この規約が実装クラスのすべてのインスタンスに一貫して適用されます。
の例: Animal
と Person
提供された例は、Animal
と Person
が ScreenName
メソッドをどのように異なる方法で実装するかを示しています。
Animal
: 静的 ScreenName
メソッドは、すべての動物オブジェクトの総称名を表します。Person
: インスタンス メソッドでは、各人物オブジェクトに一意の名前を付けることができます。代替アプローチを使用すると、インターフェイスのコントラクトを損なうことなく、望ましい結果を達成できます。例:
Animal
と定数プロパティ: Animal
クラス内で定数プロパティを定義し、その値を ScreenName()
から返すと、インターフェイス規則に準拠しながら静的な名前が保持されます。要約:
インターフェイス実装における静的メソッドに対する C# の制限により、インターフェイスのセマンティックな整合性が個々のオブジェクトのコントラクトとして維持されます。これにより、すべての実装クラス間で一貫した動作が確保されます。
以上がC# インターフェイスでは静的メソッドを実装できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。