枚举和迭代器

  枚举器

  枚举器是指一个参数类型,有MoveNext()方法和Current属性,MoveNext方法可以将枚举器的游标指向下一个元素,Current属性存储着游标当前指向的参数。可以使用GetEnumerator()方法获得对象的枚举器,然后使用MoveNext()方法和Current属性遍历对象。

  集合初始化

  正常使用泛型集合时,只需要一步就可以完成集合的创建和赋值,但编译器还是会编译成使用.add添加元素的形式往集合里添加元素。

List<int> ll = new List<int>() {1,2,3 };

List<int> ll = new List<int>();
ll.Add(1);
ll.Add(2);
ll.Add(3);

  正常我们访问集合时,会使用’变量[下标]‘这种形式访问集合中的某个元素,实际上,所有含有枚举器的对象都可以使用这种下标的形式访问对象。

  迭代器

  迭代器是指包含一个或多个yield语句的属性,方法,或索引器。

  yield的含义是:当程序执行到yield语句时,会将控制权交到调用者手里,但包含yield语句的方法会保存执行状态,等下次执行方法时会继续上次的状态执行,状态的生命周期会绑定到枚举器上,当枚举器完成枚举动作后,状态才可以释放

  yield return返回一个IEnumerable对象,可以通过GetEnumerator()方法获得对象的枚举器,然后遍历对象。

  yield return不能出现在含有catch块的try、catch、finally子句里,但catch可以出现在只含try、finally的try块的语句里,枚举器的生命周期结束后,就会执行finally的内容。

  迭代器可以嵌套组合使用

posted @ 2022-10-03 15:13  lrplrplrp  阅读(40)  评论(0编辑  收藏  举报