ホームページ > バックエンド開発 > C++ > 静的メソッドが C# のインターフェイスを実装できないのはなぜですか?

静的メソッドが C# のインターフェイスを実装できないのはなぜですか?

Patricia Arquette
リリース: 2025-01-20 12:32:09
オリジナル
418 人が閲覧しました

Why Can't Static Methods Implement Interfaces in C#?

静的メソッドが C# でインターフェイスを実装しない理由を理解する

C# では、静的メソッドがインターフェイスを実装することを禁止しています。 この制限は、インターフェースの中心的な概念、つまりクラス.

の動作規約の定義に根ざしています。

インターフェイスは、クラスが実行する必要がある操作を指定します。 ただし、静的メソッドは、特定のクラス インスタンスではなく、型レベルで動作します。 したがって、静的メソッド インターフェイスの実装を許可すると、オブジェクト指向プログラミングの原則に矛盾します。

具体的な例:

<code class="language-csharp">public interface IListItem {
  string ScreenName();
}

public class Animal : IListItem {
    // Incorrect: Static method violates the interface contract
    public static string ScreenName() {
        return "Animal";
    }
    // ... other members ...
}</code>
ログイン後にコピー

ScreenName メソッドは、理想的には、特定の IListItem インスタンスの表示名を返す必要があります。 Animal の静的実装には、個々の特性を無視して、すべての 動物に対して「Animal」を返すため、欠陥があります。

推奨される解決策:

<code class="language-csharp">public class Animal : IListItem {
    public const string AnimalScreenName = "Animal";
    public string ScreenName() { return AnimalScreenName; }
}</code>
ログイン後にコピー

この改訂されたアプローチでは、定数プロパティを使用して静的な名前を保持します。次に、ScreenName メソッドはこの定数にアクセスし、インターフェイスの要求に応じてインスタンスベースの動作を維持します。 これにより、インターフェースコントラクトが正しく履行されることが保証されます。

以上が静的メソッドが C# のインターフェイスを実装できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート