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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top