在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections;
namespace NetTest { public class TestIteration {
public void Test() { SevenColor colorIteration = new SevenColor(); foreach (string p in colorIteration) { Console.Out.WriteLine(p); } Console.Out.WriteLine("-------------Desc-------------------"); foreach (string c in colorIteration.DescColorIteration(1, 5)) { Console.Out.WriteLine(c); } Console.Out.WriteLine("--------------multi yield---------"); foreach (string c in colorIteration.GetMutipleYied()) { Console.Out.WriteLine(c); } } }
public class SevenColor : IEnumerable { string[] mColor={"red","orange","yellow","green","cyan","blue","purple"}; #region IEnumerable Members /* 迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。 可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称, 并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){} */ public IEnumerator GetEnumerator() { for (int i = 0; i < mColor.Length; i++) { yield return mColor[i]; } } #endregion
//注意,这里返回的是IEnumerable public System.Collections.IEnumerable DescColorIteration(int start, int end) { for (int i = 0; i <=end; i++) { yield return mColor[end-i]; } } //在 foreach 循环的每次后续迭代(或对 IEnumerator.MoveNext 的直接调用)中, //下一个迭代器代码体将从前一个 yield 语句之后开始,并继续下一个语句直至到达迭代器体的结尾或遇到 yield break 语句 public IEnumerable GetMutipleYied() { yield return "hello"; yield return "I am"; yield return "Jack"; yield return "wang"; } } }
2. 输出 |
请发表评论