Covariance dans les collections avec prise en charge d'index
La covariance dans les collections permet de stocker des éléments dérivés dans une collection déclarée pour un type de base. Cependant, la collection de covariantes par défaut, IEnumerable, ne prend pas en charge les index.
Comme le note l'interrogateur, la conversion ascendante d'une liste
Solutions possibles
À partir de .NET 4.5, IReadOnlyList
Création d'un wrapper covariant
Si une collection inscriptible avec prise en charge d'index est requise, une méthode d'extension peut être créée pour envelopper un IList< ;T> et exposez uniquement le sous-ensemble de méthodes qui fournissent la covariance souhaitée :
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> { // Implementation... } }
Cette classe wrapper, CovariantList
En appelant AsCovariant
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!