using System;
using Systen,Collections.Generic;
publicclass Persons : IEnumerable<string> {
string[] m_Names;
public Persons(paramsstring[] Names)
{
m_Names =newstring[Names.Length];
Names.CopyTo(m_Names,0);
} public IEnumerator<string> GetEnumerator()
{
foreach (string s in m_Names)
yield return s;
} } …
单一枚举包含多个枚举构造器
using System;
using Systen,Collections.Generic;
publicclass Persons : IEnumerable<string> {
string[] m_Names;
public Persons(paramsstring[] Names)
{
m_Names =newstring[Names.Length];
Names.CopyTo(m_Names,0);
} public IEnumerable<string> Reverse
{
get {
for (int i = m_Names.Length -1; i >=0; i--)
yield return m_Names[i];
} } public IEnumerable<string> PositionsPaires
{
get {
for (int i=0; i<= m_Names.Length; i++,i++)
yield return m_Names[i];
} } public IEnumerable<string> Concat
{
get {
foreach (string s in Reverse)
yield return s;
foreach (string s in PositionsPaires)
yield return s;
} } } class Program
{
staticvoid Main (string[] args)
{
Persons arrPersons =new Persons("Michel","Christine","Mathieu","Julien");
Console.WriteLine("-->Iterator Reverse");
foreach (string s in arrPersons.Reverse) Console.WriteLine(s);
Console.WriteLine("-->Iterator PositionPaires");
foreach (string s in arrPersons. PositionPaires) Console.WriteLine(s);
Console.WriteLine("-->Iterator Concat");
foreach (string s in arrPersons.Concat) Console.WriteLine(s);
Console.ReadLine();
} }
程序将产生以下输出:
-->Iterator Reverse Julien Mathieu Christine Michel -->Iterator PositionsPaires Michel Mathieu -->Iterator Concat Julien Mathieu Christine Michel Michel Mathieu