抄袭网站怎么办,百度提升优化,新开的网站建设公司如何推广,wordpress翻译公司网站迭代器 文章目录 1、迭代器概念2、标准迭代器的实现方法3、用yield return 语法糖实现迭代器4、用yield return 语法糖为泛型类实现迭代器 1、迭代器概念
迭代器#xff08;iterator#xff09; 又称光标#xff08;cursor#xff09;
是程序设计的软件设计模式
迭代器提供…迭代器 文章目录 1、迭代器概念2、标准迭代器的实现方法3、用yield return 语法糖实现迭代器4、用yield return 语法糖为泛型类实现迭代器 1、迭代器概念
迭代器iterator 又称光标cursor
是程序设计的软件设计模式
迭代器提供一个方法顺序访问一个聚合对象中的各个元素
而又不暴露其内部的标识在表现效果上看
是可以在容器对象例如链表或数组上遍历访问的接口
设计人员无需关心容器对象的内存分配的实现细节
可以用foreach遍历的类都是实现了迭代器的2、标准迭代器的实现方法
继承IEnumerable, IEnumerator
using System.Collections;CustomList lists new CustomList();
//foreach本质
//1、先获取in后面这个对象的IEnumerator
//会调用对象其中的GetEnumerator方法来获取
//2、执行得到这个IEnumerator对象中的MoveNext方法
//3、只要MoveNext方法的返回值是true就会去得到Current
//然后赋值给item
foreach (var item in lists)
{Console.WriteLine(item);
}class CustomList : IEnumerable, IEnumerator
{private int position -1;private int[] list;public CustomList(){list new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };}public object Current {get { return list[position]; }}public IEnumerator GetEnumerator(){Reset();return this;}public bool MoveNext(){position;return position list.Length;}//reset重置光标位置写在IEnumerator中public void Reset(){position -1;}
}3、用yield return 语法糖实现迭代器
yield return 是C#提供的语法糖
语法糖主要作用就是将复杂逻辑简单化可以增加程序的可读性CustomList list new CustomList();
foreach (var item in list)
{
Console.WriteLine(item);
}
class CustomList : IEnumerable
{private int[] list;public CustomList(){list new int[] { 1, 2, 3 };}public IEnumerator GetEnumerator(){for (int i 0; i list.Length; i){//配合迭代器使用yield return list[i];}}
}4、用yield return 语法糖为泛型类实现迭代器
CustomListstring array new CustomListstring(aaa,bbb,ccc);
foreach (var item in array)
{Console.WriteLine(item);
}
class CustomListT : IEnumerable
{private T[] array;public CustomList(params T[] array){this.array array;}public IEnumerator GetEnumerator(){for (int i 0; i array.Length; i){yield return array[i];}}
}