IEnumerator aux génériques.
-
11-07-2019 - |
Question
j'ai quelques cours que j'essaie de passer à l'utilisation de génériques
Classe1: Courbe
cette classe a le code suivant:
public class Curve : IEnumerable
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator(); // Calls non-interface method
}
public RTRatePointEnumerator GetEnumerator()
{
return new RTRatePointEnumerator(_hash);
}
Classe 2:
public class CurvePointEnumerator : IEnumerator
quelle est la conversion recommandée de ces deux classes pour utiliser des génériques
La solution
Vous n'avez pas spécifié le type renvoyé par l'énumérateur. mais je vais deviner d'après les noms, il s'agit de RTRatePoint et CurvePoint. Je voudrais changer le code pour être le suivant
class Curve: IEnumerable<RTRatePoint> {
IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() {
return GetEnumerator();
}
public RTRatePointEnumerator GetEnumerator() {
return new RTRatePointEnumerator(_hash);
}
}
class CurvePointEnumerator : IEnumerator<CurvePoint>
Un élément qui peut vous faire trébucher est que IEnumerator < T > implémente en outre IDisposable afin que CurvePointEnumerator et RTRatePointEnumerator aient besoin d’une méthode Dispose ajoutée. Probablement si cette méthode peut être à peu près vide. La raison étant que si vous ne disposiez de rien avant, il n’est plus nécessaire de le faire maintenant.
void IDispose.Dispose() {
// Nothing to see here
}
Autres conseils
IEnumerable<T> and IEnumerator<T>
gah, il a avalé mon code