ホームページ > バックエンド開発 > C++ > C#で複数の継承をどのようにシミュレートでき、代替案は何ですか?

C#で複数の継承をどのようにシミュレートでき、代替案は何ですか?

Mary-Kate Olsen
リリース: 2025-01-29 20:51:10
オリジナル
599 人が閲覧しました

How Can Multiple Inheritance Be Simulated in C# and What Are the Alternatives?
C#

の多重継承シミュレーション

マルチインヒェリタンス(1つのクラスが複数の親カテゴリから継承する)は、通常、複雑で簡単に間違いを犯すことができると考えられています。ただし、場合によっては、有益かもしれません。

インターフェイスを使用して、より多くの継承をシミュレート

C#は、より多くの継承をサポートしていませんが、それをシミュレートするために使用できます。以下は例です:

ただし、このシミュレーション方法の欠点は、インターフェイスの変更を変更する必要があることです

<code class="language-csharp">public interface IFirst { void FirstMethod(); }
public interface ISecond { void SecondMethod(); }

public class First : IFirst { public void FirstMethod() { Console.WriteLine("First"); } }
public class Second : ISecond { public void SecondMethod() { Console.WriteLine("Second"); } }
public class FirstAndSecond : IFirst, ISecond {
    First first = new First();
    Second second = new Second();
    public void FirstMethod() { first.FirstMethod(); }
    public void SecondMethod() { second.SecondMethod(); }
}</code>
ログイン後にコピー
コード生成方法

FirstAndSecond

理想的には、複数の既存のクラスの組み合わせを自動的に生成する方法があるはずです。これは、以下に示すように、コード生成または架空のC#構文を使用して実装できます。

組み合わせ代替

より多くの継承をシミュレートしようとする代わりに、組み合わせの使用を検討する方が良いです。インターフェイスは、組み合わせ要件を定義できます:

<code class="language-csharp">public class FirstAndSecond : IFirst from First, ISecond from Second { }</code>
ログイン後にコピー

拡張方法を簡素化してを呼び出す

拡張法(C#3.0で導入)は、隠された属性の方法をさらに簡素化できます。

シミュレーション多重継承と比較して、この代替案はより明確で柔軟な方法を提供します。
<code class="language-csharp">public interface ISteerable { SteeringWheel wheel { get; set; } }
public interface IBrakable { BrakePedal brake { get; set; } }

public class Vehicle : ISteerable, IBrakable {
    public SteeringWheel wheel { get; set; }
    public BrakePedal brake { get; set; }
    public Vehicle() { wheel = new SteeringWheel(); brake = new BrakePedal(); }
}</code>
ログイン後にコピー

以上がC#で複数の継承をどのようにシミュレートでき、代替案は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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