派生クラスのリストをc#
の基本クラスのリストに変換する C#の継承により、ベースクラスまたはインターフェイスから派生クラスを作成できます。ただし、派生クラスののList
を基本クラスのList
に直接割り当てることは許可されていません。 この制限は、一般的なタイプパラメーターに関するタイプシステムの厳格さから生じます。
この例を考えてみましょう:
これを克服するには、2つの主要な方法を使用できます。
<code class="language-csharp">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 } }</code>
メソッド1:
の使用
このアプローチは、派生クラスのリストを繰り返し、各要素を基本クラスのタイプに明示的にキャストします。
ConvertAll
<code class="language-csharp">List<C> listOfC = new List<C>(); // Your list of derived classes List<IA> listOfIA = listOfC.ConvertAll(x => (IA)x);</code>と同じタイプ変換を実行しますが、より合理化された構文を使用します。
両方の方法が同じ結果を達成します。元のリストからのオブジェクトを含む新しいリストですが、ベースクラスのタイプ。 LINQアプローチ(
以上が派生クラスのリストをC#の基本クラスのリストに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。