Maison > développement back-end > C++ > Comment convertir en toute sécurité une liste en liste en C# ?

Comment convertir en toute sécurité une liste en liste en C# ?

Barbara Streisand
Libérer: 2025-01-17 00:46:09
original
181 Les gens l'ont consulté

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

Convertissez en toute sécurité List en C# en List

Lorsque vous travaillez avec des collections C#, vous pouvez rencontrer des situations dans lesquelles vous devez convertir une liste d'objets de classe dérivés en une liste d'objets d'interface de base. Bien que cette conversion semble simple, la conversion entre différents types peut entraîner des problèmes potentiels.

Le casting direct d'un type à un autre (par exemple, de List à List) n'est pas possible en C# car cela entraînerait des opérations dangereuses. Tenter une telle distribution peut entraîner un comportement inhabituel ou inattendu.

Pour effectuer une conversion en toute sécurité entre ces deux types, nous devons créer une nouvelle liste de types de cibles. Ceci peut être réalisé en itérant la liste d'origine et en ajoutant manuellement chaque élément à la nouvelle liste. Par exemple :

<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>
Copier après la connexion

Options supplémentaires dans .NET 4 et C# 4

Dans .NET 4 et C# 4, vous pouvez profiter du concept de covariance pour simplifier la conversion d'un IEnumerable en un IEnumerable. Ceci est utile lorsque vous travaillez avec des collections en lecture seule :

<code class="language-csharp">// 使用协变将 IEnumerable<Apple> 转换为 IEnumerable<IFruit>
List<IFruit> fruit = apples.AsEnumerable<IFruit>().ToList();</code>
Copier après la connexion

Cependant, il convient de noter que la covariance ne s'applique qu'aux collections lecture seule. Si vous modifiez la liste d'origine après avoir créé la vue IEnumerable, les modifications ne sont pas reflétées dans la vue dérivée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal