継承メカニズムにより、既存のクラスに基づいて新しいクラスを作成できますが、同じ概念は汎用リストに直接適用できません。具体的には、派生クラスが自己ベースのクラスを継承している場合でも、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<基类>
<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>ここで、リスト内の各要素をタイプaに変換し、
に変換要素を含む新しいリストを作成します。
以上が派生クラスのリストをC#の基本クラスのリストに変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。