J'implémentais ma propre classe ArrayList et j'ai été surpris quand j'ai réalisé que
public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
return _array.GetEnumerator();
}
n'a pas fonctionné. Quelle est la raison pour laquelle les tableaux n'implémentent pas IEnumerator dans .NET?
Y a-t-il une solution de contournement?
Merci
Les tableaux implémentent IEnumerable<T>
, mais cela se fait dans le cadre des connaissances spéciales de la CLI pour les tableaux. Cela fonctionne comme s'il s'agissait d'une implémentation explicite (mais ce n'est pas le cas: cela se fait au moment de l'exécution). De nombreux outils ne montreront pas cette implémentation, cela est décrit dans la section Remarques de la vue d'ensemble de la classe Array
.
Vous pouvez ajouter un casting:
return ((IEnumerable<T>)_array).GetEnumerator();
Notez que l'ancienne couverture MSDN (pre docs.Microsoft.com) de cela a changé plusieurs fois avec différentes versions de .NET, vérifiez la section remarques .