wordpress建站需要多大内存,租服务器多少钱,华为虚拟主机,网站开发实习报告一.迭代器方法介绍
可使用foreach循环进行遍历的方法#xff0c;称为迭代器方法。
迭代器方法使用yield return语句返回元素。 到达yield return语句时#xff0c;会记住当前在代码中的位置。 下次调用迭代器函数时#xff0c;将从该位置开始执行。换言之#xff0c;如果…一.迭代器方法介绍
可使用foreach循环进行遍历的方法称为迭代器方法。
迭代器方法使用yield return语句返回元素。 到达yield return语句时会记住当前在代码中的位置。 下次调用迭代器函数时将从该位置开始执行。换言之如果语句中出现yield关键字则意味着它出现的方法是迭代器方法。
在以下示例中foreach 循环的首次迭代使 SomeNumbers 迭代器方法执行直至到达第一个 yield return 语句。 此迭代返回的值为 3并保留当前在迭代器方法中的位置。 在循环的下次迭代中迭代器方法的执行将从其暂停的位置继续直至到达 yield return 语句后才会停止。 此迭代返回的值为 5并再次保留当前在迭代器方法中的位置。 到达迭代器方法的结尾时循环完成。 class MainClass{public static IEnumerable SomeNumbers(){yield return 3;yield return 5;yield return 8;}static void Main(){foreach (int number in SomeNumbers()){Console.Write(number.ToString() );}}}/* Output:3 5 8*/
迭代器方法的返回类型必须为IEnumerable,IEnumerator,IEnumerableT或IEnumeratorT。可以使用yield break语句来终止迭代。
在迭代器方法中除了yield return外不允许出现普通的return语句。
二.通过迭代器方法快速创建迭代器
在下例中如果不使用yield return语法则需创建一个类实现IEnumerator接口实现MoveNext、Current和reset方法。可见yield是一种语法糖简化了创建迭代器的复杂性。 public class DaysOfTheWeek : IEnumerable{private string[] days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };public IEnumerator GetEnumerator(){for (int index 0; index days.Length; index){// Yield each day of the week.yield return days[index];}}}class MainClass{static void Main(){DaysOfTheWeek days new DaysOfTheWeek();foreach (string day in days){Console.Write(day );}// Output: Sun Mon Tue Wed Thu Fri SatConsole.ReadKey();}}