枚举迭代
/* 枚举迭代 如果需要foreach迭代的支持那就要实现接口IEnumerable的GetEnumerator方法 返回一个IEnumerable接口的枚举 该方法通过MoveNext方法和Current属性来迭代。 用yield语句轻松创建枚举器 */ using System; using System.Collections.Generic; namespace Frank { public class Test { public static void Main(string[] args) { /* IL不会把foreach解析为IL语言 C#中定义的foreach foreach(Person p in persons) { System.Console.WriteLine(p) } IL解析后的代码段 IEnumerator<Person> enumerator = persons.GetEnumerator(); while(enumerator.MoverNext()) { Person p = enumerator.Current; System.Console.WriteLine(p); } */ Test2 t = new Test2(); foreach(string item in t) { System.Console.WriteLine(item); } } } //自定义类实现foreach的支持 //其实要想自己的类支持迭代,只要有方法GetEnumerator返回IEnumerator即可 public class Test2 { public IEnumerator<string> GetEnumerator()//迭代块 { yield return "Hello";//返回一个字符串 yield return "World";//返回第二个字符串 // yield break;//停止迭代 } } }