C#迭代器和Unity协程是什么
这篇文章主要为大家展示了C#迭代器和Unity协程是什么,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
站在用户的角度思考问题,与客户深入沟通,找到定州网站设计与定州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟空间、企业邮箱。业务覆盖定州地区。
1、C#迭代器
1.1、IEnumerable和IEnumerator
C#中的迭代器封装在IEnumerable和IEnumerator和他们的泛型接口中。
IEnumerable:定义了一个可以获取IEnumerator的方法---GetEnumerator()。
//IEnumerable的代码实现 public interface IEnumerable { IEnumerator GetEnumerator(); }
IEnumerator:则在目标序列上实现循环迭代,直到不再需要数据。常见的foreach循环就是使用这个接口
//IEnumerator的代码实现 public interface IEnumerator { ////// 获取当前的项(只读属性) /// object Current { get; } ////// 将游标的内部位置向前移动 /// ///是否成功 bool MoveNext(); ////// 将游标重置到第一个成员前面 /// void Reset(); }
但是为什么会有两个接口呢?为什么不直接让IEnumerable实现所有方法呢?
为了不违背单一职责原则。如果有几个嵌套的foreach循环,那么彼此就可能会收到影响了。
1.2、迭代器使用
C#中的数组和集合都是继承了IEnumerable接口的,所以我们可以直接使用。
static void Main(string[] args) { int[] arr = new int[5] { 12, 65, 749, 16, 49 }; //foreach (int item in arr) //{ // Console.WriteLine(item); //} #region 和上面的foreach相同 IEnumerator e = arr.GetEnumerator(); //获取要迭代的对象 while (e.MoveNext()) //一个一个的读取元素,读取完会返回false { Console.WriteLine(e.Current); //输出读取内容 } #endregion }
自定义类中使用迭代器。
////// 动物园类,里面有很多动物 /// public class Zoo : IEnumerable { Animal[] animals = new Animal[3]; public Zoo() { animals[0] = new Animal("张三"); animals[1] = new Animal("李四"); animals[2] = new Animal("赵五"); } public IEnumerator GetEnumerator() { return this.animals.GetEnumerator(); } } ////// 动物类,每个动物有其名字 /// public class Animal { private string name; public string Name { get { return name; } } public Animal(string name) { this.name = name; } } static void Main(string[] args) { Zoo zoo = new Zoo(); //可以直接使用foreach迭代 foreach (Animal animal in zoo) { Console.WriteLine(animal.Name); } Console.ReadKey(); }
2、Unity中的协程
2.1、进程 线程 协程介绍
进程:
- 进程有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
- 进程是有独立功能的程序关于某个数据集合上的一次运行活动。
线程:
- 线程有自己独立的栈和共享的堆,共享堆,不共享栈。线程由操作系统调度。
- 一个进程可以包含多个线程。
- 线程异步运行,多处理器中多个线程可同时运行。
协程:
- 协程共享堆,不共享栈,协程由程序员在协程的代码里显示调度。
- 协程执行在游戏主线程上,同一时间只能执行一个协程。
- 线程避免了无意义的调度,提高了性能,但需要程序员自己承担调度责任。
2.2、协程使用
Unity的协程系统是基于C#的一个简单而强大的接口 ,IEnumerator。
以上就是关于C#迭代器和Unity协程是什么的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。
名称栏目:C#迭代器和Unity协程是什么
浏览地址:http://cdiso.cn/article/jpooii.html