【发布时间】:2012-07-03 20:35:15
【问题描述】:
这可能是一个简单的语法问题,但我想不通。
通常,我会这样做:
public class OrderBook : IEnumerable<PriceLevel>
{
private readonly List<PriceLevel> PriceLevels = new List<PriceLevel>();
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
但我想使用数组而不是列表 - 像这样:
public class ArrayOrderBook : IEnumerable<PriceLevel>
{
private PriceLevel[] PriceLevels = new PriceLevel[500];
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
IEnumerator IEnumerable.GetEnumerator() 似乎编译得很好 - 但公众 IEnumerator<PriceLevel> 说我需要某种类型的演员 - 最好的方法是什么?
威廉
【问题讨论】:
-
为什么?为什么要为此使用数组?
-
List由数组本身支持,因此除了工作过于复杂之外,您不会获得任何好处。 -
@Tudor 取决于类中的其他逻辑,
PriceLevels可能更有意义成为一个数组(例如固定大小)。想要重构它没有错。 -
是的 - 这是对更大和长话短说它需要是一个数组的严重过度简化(至少现在是这样)
标签: c# ienumerable