Mình đọc tài liệu và biết nó có tác dụng là để dùng được foreach đối với những lớp mà thực thi nó. Nhưng mình thấy nó thật là dư thừa nếu như mình dùng cách dưới đây:
class Person
{
private int age;
private String name;
public Person(int age, String name)
{
this.age = age;
this.name = name;
}
public override string ToString()
{
return age + "\t" + name;
}
}
class PersonCollection
{
private List<Person> list;
//get collection list để sử dụng được foreach
internal List<Person> List
{
get { return list; }
}
public PersonCollection()
{
list = new List<Person>();
}
public void add(Person person)
{
list.Add(person);
}
}
class Program
{
static void Main(string[] args)
{
Person p1 = new Person(20, "John");
Person p2 = new Person(21, "Jackson");
Person p3 = new Person(20, "Tom");
Person p4 = new Person(19, "Cat");
PersonCollection list = new PersonCollection();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
//ta vẫn dùng được foeach bình thường đâu cần đến IEnumerable làm gì nhỉ?
foreach (var item in list.List)
Console.WriteLine(item.ToString());
Console.ReadKey();
}