代码
public class YieldReturn { // yield return用于无缝实现迭代模式。 string [] strArr; public YieldReturn( params string [] arr) { strArr = new string [arr.Length]; arr.CopyTo(strArr, 0 ); } // -------一个枚举对象可以对应多个枚举 /// <summary> /// 反序输出 /// </summary> public IEnumerable < string > Reverse { get { for ( int i = strArr.Length - 1 ; i >= 0 ; i -- ) yield return strArr[i]; } } /// <summary> /// 顺序输出 /// </summary> public IEnumerable < string > PosEven { get { for ( int i = 0 ;i < strArr.Length; i ++ ) yield return strArr[i]; } } public IEnumerable < string > Concat { get { foreach ( string s in Reverse) yield return s; foreach ( string s in PosEven) yield return s; } } } 实现: public static void yieldreturn() { YieldReturn yr = new YieldReturn( " aaa " , " bbb " , " ccc " ); Console.WriteLine( " -----Reverse: " ); foreach ( string s in yr.Reverse) Console .WriteLine (s); Console.WriteLine( " -----PosEven: " ); foreach ( string s in yr.PosEven) Console.WriteLine(s); Console.WriteLine( " -----Concat: " ); foreach ( string s in yr.Concat) Console.WriteLine(s); }