« Patrons de conception/Itérateur » : différence entre les versions
Contenu supprimé Contenu ajouté
Ligne 23 :
== Utilisation d'un itérateur explicite ==
Dans un langage à objets comme le C#, un itérateur est un objet qui implémente l'interface IEnumerator.
<source lang=csharp>
Ligne 33 :
</source>
<source lang=csharp>▼
IterateurTypique iterateur = new IterateurTypique ();▼
iterateur.Reset();▼
while(iterateur.MoveNext()){▼
Console.WriteLine(iterateur.Current.ToString());▼
}▼
</source>▼
Une des nombreuses implémentations de l'objet possibles peut ressembler à celle-ci.
<source lang=csharp>
Ligne 43 ⟶ 54 :
public void Reset() { _positionCourante = -1; }
public bool MoveNext() {
if( _positionCourante + 1 >= _chainesAParcourir.Length ) return false;
_positionCourante +=1;
Ligne 53 ⟶ 63 :
</source>
▲On utilisera alors l'iterateur pour accéder aux valeurs disponibles.
▲<source lang=csharp>
▲ IterateurTypique iterateur = new IterateurTypique ();
▲ iterateur.Reset();
▲ while(iterateur.MoveNext()){
▲ Console.WriteLine(iterateur.Current.ToString());
▲ }
▲</source>
▲Grace à l'interface IEnumerable, on peut passer à un itérateur implicite.
<source lang=csharp>
Ligne 72 ⟶ 71 :
</source>
l'instruction foreach du C# appelle cette méthode GetEnumerator() et procède à une itération explicite tout en cachant les détails de l'implémentation.
<source lang=csharp>
|