c#lt; オブジェクト指向プログラミングの継承により、デリバティブが基本クラスの属性と方法を継承できるようになります。ただし、この継承がリストなどのジェネリックに適用できない理由が明確でない場合があります。
次の例を考えてみましょう このコードでは、リストがリストに暗黙的に変換できないため、コンパイラエラーが発生します。クラスCがインターフェイスAを継承している場合でも、コンパイラは派生クラスのセットを基本クラスのコレクションに自動的に変換することはできません。
この問題を解決するために、2つの方法があります。
<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>
Convertallメソッドはパラメーターとして関数を受け入れ、関数の関数をソースリストに適用して新しいリストを作成します。この例では、関数(x =&gt;(a)x)は、リストの各要素をタイプAに強制的に変換します。
を使用します
linqのキャスト()メソッドでは、あるタイプのリストを別のリストに変換できます。リストをリストに変換してからリストに変換することにより、派生クラスオブジェクトのコレクションからベースクラスオブジェクトのコレクションを作成できます。
以上がリストをC#のリストに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。