下面是详细讲解“C#中IEnumerable接口介绍并实现自定义集合”的完整攻略:
什么是IEnumerable接口
IEnumerable接口是C#中的一个接口,可以用来枚举数据集合中的数据。
IEnumerable接口定义了一个方法GetEnumerator,这个方法返回一个IEnumerator接口的实例,这个实例可以用来依次访问集合中的元素。
在C#中,集合类型如List、Array默认实现了IEnumerable接口,因此我们可以直接使用foreach循环来遍历集合中的元素。
实现IEnumerable接口的自定义集合
如果我们自己定义了一个集合类型,那么我们可以通过实现IEnumerable接口,来支持使用foreach循环遍历集合中的元素。
下面是一个简单的例子,演示如何实现IEnumerable接口的自定义集合:
// 定义一个Person类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
// 定义一个自定义集合
public class People : IEnumerable<Person>
{
private List<Person> people = new List<Person>();
// 添加一个Person对象
public void Add(Person p)
{
people.Add(p);
}
// 实现GetEnumerator方法
public IEnumerator<Person> GetEnumerator()
{
return people.GetEnumerator();
}
// 实现IEnumerable的GetEnumerator方法
IEnumerator IEnumerable.GetEnumerator()
{
return people.GetEnumerator();
}
}
在这个例子中,我们定义了一个Person类,表示一个人,然后定义了一个People类,表示一个人的集合。
People类实现了IEnumerable
使用这个自定义集合可以这样使用:
People people = new People();
people.Add(new Person{Name = "张三", Age = 18});
people.Add(new Person{Name = "李四", Age = 20});
foreach (var person in people)
{
Console.WriteLine(person.Name);
}
上面的代码使用foreach循环来遍历自定义集合People中的元素,输出每个人的名字。
使用yield关键字生成集合元素
在实现IEnumerable接口的时候,我们还可以使用yield关键字来生成集合元素,这样可以简化代码,并且可以逐步生成元素,避免一次性生成大量元素导致性能问题。
下面是一个例子,演示如何使用yield关键字生成集合元素:
public class Numbers : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
这个例子中,Numbers类实现了IEnumerable
使用这个自定义集合可以这样使用:
foreach (var number in new Numbers())
{
Console.WriteLine(number);
}
上面的代码输出0~9之间的整数。
总结
以上就是C#中IEnumerable接口介绍并实现自定义集合的完整攻略,我们讲解了什么是IEnumerable接口,以及如何实现IEnumerable接口支持自定义集合的遍历。
刚才还给出了两个示例,一个是普通的自定义集合,一个是使用yield关键字生成集合元素的自定义集合,希望能帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中IEnumerable接口介绍并实现自定义集合 - Python技术站