yield return 语句返回集合的一个元素

yield break 可停止迭代

------------------------------------------------------------------Student.cs

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication3{publicclassStudent{string[]str=newstring[]{"张飞","关羽","贝贝","香香"};///<summary>///正序迭代///</summary>///<returns></returns>publicIEnumerator<string>GetEnumerator(){for(inti=0;i<str.Length;i++){yieldreturnstr[i];}}///<summary>///倒序迭代///</summary>///<returns></returns>publicIEnumerable<string>Reverse(){for(inti=str.Length-1;i>=0;i--){yieldreturnstr[i];}}///<summary>///自定义迭代///</summary>///<paramname="i">开始索引</param>///<paramname="j">长度</param>///<returns></returns>publicIEnumerable<string>Subset(intindex,intlength){for(inti=index;i<index+length;i++){yieldreturnstr[i];}}}}

------------------------------------------------------------------主程序

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication3{classProgram{staticvoidMain(string[]args){Students=newStudent();foreach(varitemins)//正序迭代{Console.WriteLine(item);}Console.WriteLine("reverse");foreach(varitemins.Reverse())//倒序迭代{Console.WriteLine(item);}Console.WriteLine("subset");//自定义迭代foreach(varitemins.Subset(1,1)){Console.WriteLine(item);}Console.ReadKey();}}}