ホームページ >バックエンド開発 >C++ >派生クラスのリストをC#の基本クラスのリストに変換する方法は?

派生クラスのリストをC#の基本クラスのリストに変換する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-01 17:41:101071ブラウズ

How to Convert a List of Derived Classes to a List of Base Classes in C#?

c#歌詞はベースクラスのリストに変換されます

継承メカニズムにより、既存のクラスに基づいて新しいクラスを作成できますが、同じ概念は汎用リストに直接適用できません。具体的には、派生クラスが自己ベースのクラスを継承している場合でも、a

を宣言し、派生型のリストを割り当てることはできません。次の例を検討してください:

List<基类> コンパイラはCオブジェクトのリストではなく、Aオブジェクトのリストを期待するため、このコードはコンパイル中に失敗します。この問題を解決するには、派生オブジェクトのリストをベースオブジェクトのリストに変換する必要があります。

<code class="language-csharp">interface A { }

class B : A { }

class C : B { }

class Test
{
    static void Main(string[] args)
    {
        A a = new C(); // 正确
        List<A> listOfA = new List<C>(); // 编译错误
    }
}</code>
変換方法

に変換する方法は、リスト要素を反復し、手動で手動で変換することです。これは、メソッド:を使用して実装できます

ここでは、反復Cリストの各要素がタイプAに変換し、新しいListOFAリストに追加します。 List<派生类> List<基类> linq ConvertAllまたは、linqを使用して変換を実行できます。

<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>
ここで、リスト内の各要素をタイプaに変換し、

に変換要素を含む新しいリストを作成します。

以上が派生クラスのリストをC#の基本クラスのリストに変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。