C# のリスト をリスト に安全に変換します
C# コレクションを操作する場合、派生クラス オブジェクトのリストを基本インターフェイス オブジェクトのリストに変換する必要がある状況に遭遇することがあります。この変換は単純に見えますが、異なる型間でキャストすると潜在的な問題が発生する可能性があります。
ある型から別の型への直接キャスト (たとえば、List
これら 2 つの型の間で安全に変換するには、ターゲット型の新しいリストを作成する必要があります。これは、元のリストを繰り返し、各要素を新しいリストに手動で追加することで実現できます。例:
<code class="language-csharp">List<Client> clients = new List<Client>(); List<IDic> dics = new List<IDic>(); // 遍历 Client 列表 foreach (Client client in clients) { // 创建一个新的 IDic 对象并设置其属性 IDic dic = new Dic { Id = client.Id, Name = client.Name }; // 将新的 IDic 对象添加到 dics 列表 dics.Add(dic); }</code>
.NET 4 および C# 4 の追加オプション
.NET 4 と C# 4 では、共分散 の概念を利用して、IEnumerable から IEnumerable への変換を簡素化できます。これは、読み取り専用コレクションを操作する場合に便利です:
<code class="language-csharp">// 使用协变将 IEnumerable<Apple> 转换为 IEnumerable<IFruit> List<IFruit> fruit = apples.AsEnumerable<IFruit>().ToList();</code>
ただし、共分散は 読み取り専用 コレクションにのみ適用されることに注意してください。 IEnumerable
以上がC# でリストをリストに安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。