gpt4 book ai didi

c# - 什么时候应该使用 IEnumerable 和 GetEnumerator?

转载 作者:太空狗 更新时间:2023-10-29 23:17:00 24 4
gpt4 key购买 nike

在我们的许多项目中,我看到了一些自定义集合/或容器类,它们包含某种通用集合,例如List(of T) 类。

它们通常有一个 GetXXX 方法,该方法返回自定义集合类使用的任何类型的 IEnumerable,因此可以使用 foreach 循环迭代内部集合。

例如

public IEnumerable<UploadState> GetStates
{
get
{
return new List<UploadState>(m_states);
}
}

我的问题是,这些类是否应该实现 IEnumerable 接口(interface),并在 List 本身上调用 GetEnumerator

是否有首选方式,还是由开发人员决定?

最佳答案

如果您的类是自定义集合类,那么是的,它应该实现 IEnumerable<T> .在这种情况下,内部列表的公共(public)属性将是多余的。想象一个简单的类:

public class People : IEnumerable<Person>
{
List<Person> persons = new List<Person>();

public IEnumerator<Person> GetEnumerator()
{
return persons.GetEnumerator();
}
}

但是如果你的类不能像一个集合一样,那么提供一个公共(public)的IEnumerable其元素的属性:

public class Flight
{
List<Person> passengers = new List<Person>();

public IEnumerable<Person> Passengers
{
get { return passengers; }
}
}

无论如何,选择正确的设计始终取决于开发人员。

关于c# - 什么时候应该使用 IEnumerable 和 GetEnumerator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838050/

24 4 0