using System;
using System.Collections;
public class Person//需要枚举的结构
{
public Person(string fName, string lName)
{
this.firstName = fName;
this.lastName = lName;
}
public string firstName;
public string lastName;
}
public class People : IEnumerable//创建people枚举方法
{
private Person[] _people;
public People(Person[] pArray)
{
_people = new Person[pArray.Length];//获取矩阵长度
for (int i = 0; i < pArray.Length; i++)
{
_people[i] = pArray[i];//输入person数值
}
}
//GetEnumerator()实现枚举方法,此方法与foreach绑定(与movenext,reset相关。。因为已经被封装了所以这并不重要,因为看不到.GetEnumerator如何与movenext和reset相关联,此外Inumerator是可以自定义的)
IEnumerator IEnumerable.GetEnumerator()
{
if (_people != null)
{
foreach (Person item in this._people)
{
yield return item;
}
}
}
}
class App
{
static void Main()
{
Person[] peopleArray = new Person[3]
{
new Person("John", "Smith"),
new Person("Jim", "Johnson"),
new Person("Sue", "Rabon"),
};
People peopleList = new People(peopleArray);//将数组插入
foreach (Person p in peopleList)//使用与GetEnumerator相关的foreach实现枚举
Console.WriteLine(p.firstName + " " + p.lastName);//IEnum将结构枚举出来了
}
}
超级简单的IEnumerable实现方法
最新推荐文章于 2024-06-17 17:55:34 发布