c#歌詞はベースクラスのリストに変換されます
継承メカニズムにより、既存のクラスに基づいて新しいクラスを作成できますが、同じ概念は汎用リストに直接適用できません。具体的には、派生クラスが自己ベースのクラスを継承している場合でも、a
を宣言し、派生型のリストを割り当てることはできません。次の例を検討してください:
List<基类>
コンパイラはCオブジェクトのリストではなく、Aオブジェクトのリストを期待するため、このコードはコンパイル中に失敗します。この問題を解決するには、派生オブジェクトのリストをベースオブジェクトのリストに変換する必要があります。
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>(); // 编译错误 } }
<换>に変換する方法は、リスト要素を反復し、手動で手動で変換することです。これは、メソッド:を使用して実装できます
ここでは、反復Cリストの各要素がタイプAに変換し、新しいListOFAリストに追加します。 List<派生类>
List<基类>
ConvertAll
または、linqを使用して変換を実行できます。
List<A> listOfA = new List<C>().ConvertAll(x => (A)x);
に変換要素を含む新しいリストを作成します。
以上が派生クラスのリストをC#の基本クラスのリストに変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。