0

我有一些课程正在尝试使用泛型

第一类:曲线

这个类有以下代码:

public class Curve : IEnumerable

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

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

第 2 类:

  public class CurvePointEnumerator : IEnumerator

建议将这两个类转换为使用泛型的方法是什么

4

2 回答 2

1

您没有指定从枚举器返回的类型。但我会根据它的名称来猜测它是 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<T> 还实现了 IDisposable 因此 CurvePointEnumerator 和 RTRatePointEnumerator 将需要添加一个 Dispose 方法。尽管这种方法可能几乎是空的。原因是如果你以前没有处理任何东西,现在就没有必要了。

void IDispose.Dispose() {
  // Nothing to see here
}
于 2008-12-01T03:03:46.483 回答
0

IEnumerable<T> and IEnumerator<T>

啊,它吞噬了我的代码

于 2008-12-01T02:45:47.147 回答