Domanda

Ho alcune lezioni che sto cercando di passare a utilizzare generici

Class1: Curve

questa classe ha il seguente codice:

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

qual è la conversione consigliata di queste due classi all'utilizzo di generici

È stato utile?

Soluzione

Non è stato specificato il tipo restituito dall'enumeratore. ma ho intenzione di indovinare in base ai nomi è RTRatePoint e CurvePoint. Vorrei modificare il codice in modo che sia il seguente

class Curve: IEnumerable<RTRatePoint> {
  IEnumerator<RTRatePoint> IEnumerable<RTRatePoint>.GetEnumerator() { 
    return GetEnumerator();
  }
  public RTRatePointEnumerator GetEnumerator() {
    return new RTRatePointEnumerator(_hash);
  }
}

class CurvePointEnumerator : IEnumerator<CurvePoint>

Un elemento che potrebbe farti inciampare è che IEnumerator < T > implementa inoltre IDisposable, quindi CurvePointEnumerator e RTRatePointEnumerator dovranno avere aggiunto un metodo Dispose. Probabilmente questo metodo può essere praticamente vuoto. Il motivo è che se non stavi smaltendo nulla prima, non è necessario ora.

void IDispose.Dispose() {
  // Nothing to see here
}

Altri suggerimenti

IEnumerable<T> and IEnumerator<T>

Dio, ha ingoiato il mio codice

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top