我有我试图移动到使用泛型几类

的Class1:曲线

这类具有以下代码:

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

什么是这两个类的使用泛型推荐的转换

有帮助吗?

解决方案

您没有指定由枚举返回类型。但我要猜测基于它的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的另外实现IDisposable所以CurvePointEnumerator和RTRatePointEnumerator将需要有添加了Dispose方法。有可能的是这种方法可以是非常空。原因是,如果你之前没有任何处置,有没有必要了。

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

其他提示

IEnumerable<T> and IEnumerator<T>

GAH,它吞噬我的代码

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top