お客様から次のようなコードを受け取りました。
public class Thing
{
// custom functionality for Thing...
}
public class Things : IEnumerable
{
Thing[] things;
internal int Count { get { return things.Length; } }
public Thing this[int i] { get { return this.things[i]; } }
public IEnumerator GetEnumerator() { return new ThingEnumerator(this); }
// custom functionality for Things...
}
public class ThingEnumerator : IEnumerator
{
int i;
readonly int count;
Things container;
public ThingEnumerator(Things container)
{
i = -1;
count = container.Count;
this.container = container;
}
public object Current { get { return this.container[i]; } }
public bool MoveNext() { return ++i < count; }
public void Reset() { i = -1; }
}
私が疑問に思っているのは、クラスを取り除き、呼び出しを単に に委譲する実装にThingEnumerator
置き換えたほうがよかったのでしょうか? そのようです:Things.GetEnumerator
array
GetEnumerator
public IEnumerator GetEnumerator() { return things.GetEnumerator(); }
コードをそのままにしておく利点はありますか? (私が気付いたもう 1 つのことは、既存のコードを に置き換えることで改善できることIEnumerator
ですIEnumerator<Thing>
。)