IEnumerable Generic Interface
Assembly: mscorlib (in mscorlib.dll)
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.public class Person
{
public Person(string fName, string lName)
{
this.firstName = fName;
this.lastName = lName;
}
public string firstName;
public string lastName;
}
//
//Make the class People enumerable on Person
//
publicclassPeople : IEnumerable<Person>
{
private Person[] people;
public People(Person[] pArray)
{
people =
newPerson[pArray.Length];for (int i = 0; i < pArray.Length; i++)
{
people[i] = pArray[i];
}
}
//Implement GetEnumerator for IEnumerable<Person>
//This implementation works when the variable that holds
//the required values is enumerable
public IEnumerator<Person> GetEnumerator()
{
foreach (Person p in people)
{
yieldreturn p;
}
}
#region
IEnumerable MembersIEnumerator IEnumerable.GetEnumerator()
{
foreach (Person p in people)
{
yieldreturn p;
}
}
#endregion
}
- 4/9/2009
- michaelBao
- 4/9/2009
- michaelBao
The generic version of IEnumerable provides a way to make enumeration type-safe. Type mis-matches will show up at compile time rather than run time. Here is a code example.
using System;
using System.Collections;
using System.Collections.Generic;
public class Person
{
public Person(string fName, string lName)
{
this.firstName = fName;
this.lastName = lname;
}
public string firstName;
public string lastName;
}
//
//Make the class People enumerable on Person
//
public class People : IEnumerable<Person>
{
private Person[] people;
public People(Person[] pArray)
{
people = new Person[pArray.length];
for (int i = 0; i < pArray.length; i++)
{
people[i] = pArray[i];
}
}
//Implement GetEnumerator for IEnumerable<Person>
//This implementation works when the variable that holds
//the required values is enumerable
public IEnumerator<Person> GetEnumerator()
{
foreach (Person p in people)
{
yeild return p;
}
}
//Implement GetEnumerator for the IEnumerable interface that is
//implied by IEnumerable<Person>.
//Use explicit implementation.
IEnumerator IEnumerable.GetEnumerator()
{
foreach (Person p in people)
{
yeild return p;
}
}
}
- 1/26/2008
- Dwellingbrook
- 1/26/2008
- Dwellingbrook