C# インターフェイスは、クラスが満たさなければならない契約を定義します。 ただし、重要な制限は、静的メソッドがインターフェイス メソッドを実装できないことです。この記事では、この制限の背後にある理由を説明します。
インターフェイスは、設計上、実装を提供せずに動作を指定します。 インターフェイスを実装するクラスは、インスタンス メソッドを通じてその動作を一貫して提供する必要があります。 これは、静的メソッドの実装を許可することによって違反される中心的な原則です。
この制限の主な理由は、契約上の動作 (インターフェイスによって定義される) と静的ユーティリティ関数を明確に分離するためです。静的メソッドは、特定のインスタンスではなく、型自体を操作します。 逆に、インターフェイス メソッドは本質的に個々のオブジェクトの動作に関連しています。
Animal
クラスと Person
クラスに別個のスクリーン名が必要なシナリオを考えてみましょう。 この解決策では、静的な ScreenName()
メソッドの代わりに、const
クラス内で Animal
プロパティを使用することを提案しています。 このアプローチでは、静的な性質を維持しながら、各 Animal
インスタンスに一意の値を提供し、静的なインターフェイスの実装から生じる曖昧さを回避します。
本質的に、静的メソッド インターフェイス実装の禁止により、オブジェクト指向設計の整合性が保護されます。静的メソッドには、インターフェイス メソッドにとって重要なインスタンス固有のコンテキストが欠けており、インターフェイスによって確立された基本的なコントラクトが損なわれる可能性があります。
以上が静的メソッドでは C# インターフェイスを実装できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。