문제

제네릭 사용으로 이동하려는 몇 가지 수업이 있습니다.

클래스 1 : 곡선

이 클래스에는 다음 코드가 있습니다.

public class Curve : IEnumerable

  IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator(); // Calls non-interface method
    }

  public RTRatePointEnumerator GetEnumerator()
    {
        return new RTRatePointEnumerator(_hash);
    }

Class 2:

  public class CurvePointEnumerator : IEnumerator

이 두 클래스를 제네릭 사용으로 권장되는 전환은 무엇입니까?

도움이 되었습니까?

해결책

열거 자에서 반환되는 유형을 지정하지 않았습니다. 그러나 나는 그것이 rtratepoint와 curvepoint라는 이름을 기반으로 추측 할 것입니다. 코드를 다음으로 변경합니다

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

class CurvePointEnumerator : IEnumerator<CurvePoint>

당신을 여행 할 수있는 항목 중 하나는 그 ienumerator입니다.u003CT> 추가적으로 큐브 포인트 테너 메이터와 rtratepointenumerator는 dispose method가 추가되어야합니다. 아마도이 방법은 거의 비어있을 수 있습니다. 당신이 전에 아무것도 처분하지 않았다면, 지금은 지금 필요하지 않습니다.

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

다른 팁

IEnumerable<T> and IEnumerator<T>

가, 그것은 내 코드를 삼켰다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top