Covariance et IList : extension des collections pour les recherches d'index
En C#, les collections covariantes permettent de récupérer des éléments d'une collection parent à l'aide d'une collection enfant. Cependant, la norme IEnumerable
Depuis List
Pour résoudre ce problème, .NET 4.5 et versions ultérieures introduisent IReadOnlyList
Les deux List
Cependant, si vous avez besoin d'une collection covariante avec des indexeurs get et set, les options sont limitées. Une solution potentielle consiste à envelopper le fichier IList
public static class Covariance { public static IIndexedEnumerable<T> AsCovariant<T>(this IList<T> tail) { return new CovariantList<T>(tail); } private class CovariantList<T> : IIndexedEnumerable<T> { private readonly IList<T> tail; public T this[int index] => tail[index]; public IEnumerator<T> GetEnumerator() => tail.GetEnumerator(); public int Count => tail.Count; } } public interface IIndexedEnumerable<out T> : IEnumerable<T> { T this[int index] { get; } int Count { get; } }
Cette approche fournit une collection de covariants qui prend en charge à la fois 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!