ホームページ > バックエンド開発 > C++ > C# でリストをリストに安全に変換するにはどうすればよいですか?

C# でリストをリストに安全に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-17 00:46:09
オリジナル
194 人が閲覧しました

How to Safely Convert a List to a List in C#?

C# のリスト をリスト に安全に変換します

C# コレクションを操作する場合、派生クラス オブジェクトのリストを基本インターフェイス オブジェクトのリストに変換する必要がある状況に遭遇することがあります。この変換は単純に見えますが、異なる型間でキャストすると潜在的な問題が発生する可能性があります。

ある型から別の型への直接キャスト (たとえば、List から List へ) は、​​安全でない操作が発生するため、C# では不可能です。このようなキャストを試みると、異常または予期しない動作が発生する可能性があります。

これら 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート