ホームページ > バックエンド開発 > C++ > 派生クラスのリストをC#の基本クラスのリストに変換するにはどうすればよいですか?

派生クラスのリストをC#の基本クラスのリストに変換するにはどうすればよいですか?

DDD
リリース: 2025-02-01 18:01:08
オリジナル
729 人が閲覧しました

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

派生クラスのリストをc#

の基本クラスのリストに変換する C#の継承により、ベースクラスまたはインターフェイスから派生クラスを作成できます。ただし、派生クラスの

Listを基本クラスのListに直接割り当てることは許可されていません。 この制限は、一般的なタイプパラメーターに関するタイプシステムの厳格さから生じます。 この例を考えてみましょう:

これを克服するには、2つの主要な方法を使用できます。

interface IA {}

class B : IA {}

class C : B {}

class Test
{
    static void Main(string[] args)
    {
        IA a = new C(); // This is valid
        List<IA> listOfIA = new List<C>(); // Compiler error
    }
}
ログイン後にコピー

メソッド1:

の使用 このアプローチは、派生クラスのリストを繰り返し、各要素を基本クラスのタイプに明示的にキャストします。 ConvertAll

メソッド2:LINQの使用<

linqは、

メソッドを使用して、より簡潔なソリューションを提供します。 このメソッドは、
List<C> listOfC = new List<C>(); // Your list of derived classes
List<IA> listOfIA = listOfC.ConvertAll(x => (IA)x);
ログイン後にコピー
と同じタイプ変換を実行しますが、より合理化された構文を使用します。

両方の方法が同じ結果を達成します。元のリストからのオブジェクトを含む新しいリストですが、ベースクラスのタイプ。 LINQアプローチ()は、一般に、読みやすさと簡潔さに好まれます。 キャストが失敗する可能性がある場合は、潜在的な例外を処理することを忘れないでください(たとえば、リストに実際に基本クラスから派生していない要素が含まれている場合)。

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

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