« Patrons de conception/Itérateur » : différence entre les versions
Contenu supprimé Contenu ajouté
Ligne 36 :
<source lang=csharp>
class
private string[] _chainesAParcourir = new string[] { "TF1", "France2", "FR3", "Canal+" };
private int _positionCourante;
public void Reset() { _positionCourante = -1; }
}▼
public bool MoveNext() {
if( _positionCourante + 1 >= _chainesAParcourir.Length )
return false;
Ligne 51 ⟶ 49 :
return true;
}
public void object Current { get { return _chainesAParcourir[_positionCourante]; } }
}
</source>
On utilisera alors l'iterateur
<source lang=csharp>
iterateur.Reset();
Ligne 77 ⟶ 73 :
Un type dérivé de IEnumerable comme le sont les tableaux, listes, dictionnaires en C# possède une méthode GetEnumerator() qui appelle l'itérateur explicite. C'est cette méthode GetEnumerator qui est appelée par l'instruction foreach du C#, de manière à obtenir l'objet Current directement à chaque itération.
<source lang=csharp>
if(Television is IEnumerable) {
foreach(string chaine in Television) {
Console.WriteLine(chaine);
▲ }
}
</source>
== Itérateurs implicites ==
|