IEnumerable<T> : IEnumerable « Class « C# / CSharp Tutorial






using System;
using System.Collections.Generic;

public class Employee {
    public string Name;
    public string Title;
    public Employee(string name, string title) {
        Name = name;
        Title = title;
    }
    public override string ToString() {
        return string.Format("{0} ({1})", Name, Title);
    }
}
public class Team {
    private List<Employee> teamMembers = new List<Employee>();
    public IEnumerator<Employee> GetEnumerator() {
        foreach (Employee tm in teamMembers) {
            yield return tm;
        }
    }
    public IEnumerable<Employee> Reverse {
        get {
            for (int c = teamMembers.Count - 1; c >= 0; c--) {
                yield return teamMembers[c];
            }
        }
    }
    public IEnumerable<Employee> FirstTwo {
        get {
            int count = 0;
            foreach (Employee tm in teamMembers) {
                if (count >= 2) {
                    yield break;
                } else {
                    count++;
                    yield return tm;
                }
            }
        }
    }
    public void AddMember(Employee member) {
        teamMembers.Add(member);
    }
}

public class MainClass {
    public static void Main() {
        Team team = new Team();
        team.AddMember(new Employee("C", "C"));
        team.AddMember(new Employee("N", "K"));
        team.AddMember(new Employee("N", "S"));

        foreach (Employee member in team) {
            Console.WriteLine("  " + member.ToString());
        }
        foreach (Employee member in team.FirstTwo) {
            Console.WriteLine("  " + member.ToString());
        }
        foreach (Employee member in team.Reverse) {
            Console.WriteLine("  " + member.ToString());
        }
    }
}








7.57.IEnumerable
7.57.1.IEnumerable<T>
7.57.2.Supporting foreach with IEnumerable and IEnumerator
7.57.3.extends IEnumerable