Convertissez en toute sécurité 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
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>
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
<code class="language-csharp">// 使用协变将 IEnumerable<Apple> 转换为 IEnumerable<IFruit> List<IFruit> fruit = apples.AsEnumerable<IFruit>().ToList();</code>
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
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!