2002-11-18 (Mon) [長年日記]
_ C#のイテレータ(2)
ruby-devでも書いたけど、C#のイテレータだと一つのクラスに複数の イテレータを定義できないので不便な気がする。
public class List { internal object[] elements; internal int count; // Elementsという名前のイテレータ定義 public iterator object Elements() { foreach(object o in elements) { yield o; } } }
のように色々な名前でイテレータを定義できるようにして(実装的には Elementsという名前のメソッドで外部イテレータを返すようにする)、
foreach (object o in list.Elements()) { ... }
のようにforeach文で、コレクション(list)の代りに、イテレータ呼び 出し(外部イテレータを返すメソッドのよび出し - list.elements())を 指定するようにした方がCLU風味でよくないだろうか。