标签:style blog http color 使用 os io 2014
迭代器模式的原始图如下:
不使用c# IEnumera 情况下 会这样写
public abstract class Aggegate<T> { public abstract ITerator<T> GeTerator(); } public class ConAggregate<T> : Aggegate<T> { public T[] Datas { set; get; } public override ITerator<T> GeTerator() { return new ConIterator<T>(this); } } public interface ITerator<out T> { void Reset(); bool MoveNext(); T CurrentItem { get; } } public class ConIterator<T> : ITerator<T> { private ConAggregate<T> ct; int position = -1; public ConIterator(ConAggregate<T> c) { ct = c; } public T CurrentItem { get { return ct.Datas[position]; } } public void Reset() { position = -1; } public bool MoveNext() { position++; return position < ct.Datas.Length; } }
c# 有IEnumerable,IEnumerator 两个接口 实现这两个接口 既可完成迭代。即可以使用Foreach 做遍历。
使用yield return;
public class ConAggregateYield<T>:IEnumerable { public T[] Datas { set; get; } public IEnumerator GetEnumerator() { for (int i = 0; i < Datas.Length; ++i) { yield return Datas[i]; } } }
标签:style blog http color 使用 os io 2014
原文地址:http://www.cnblogs.com/nessie/p/3868285.html