参考书籍: 《C#图解教程》
枚举器一般用来foreach的,而迭代器在Unity中常用来当协程(Coroutine)用。
实现IEnumerator接口的类就可以foreach了,当然前提是实现对。这个接口有三个函数成员。
foreach做的事跟下面这段代码差不多。
static void Main(){ int[] MyArray = {10,11,12,13}; IEnumerator ie = MyArray.GetEnumerator(); //获取枚举器 while(ie.MoveNext()) //移到下一项 { int i =(int) ie.Current; //获取当前项 Console.WriteLine("{0}",i); }}
只有一个成员,GetEnumerator方法,就是实现上面那个接口的类对象。
因为非泛型的实现是不安全的,它们返回object的引用,需要自己转换成实际类型。如上面的代码int i = (int) ie.Current;
,是不安全的。而实现泛型的Current属性,就会返回实际类型的对象。
状态 | 解释 |
---|---|
Before | 第一次迭代前 |
Running | 搞事情 |
Suspended | 等下一次迭代 |
After | 贤者模式 |
联系客服