在我们的许多项目中,我看到了一些自定义集合或容器类,它们包含某种泛型集合,例如List(of T)类.
它们通常有一个GetXXX方法,它返回自定义集合类使用的任何类型的IEnumerable,因此可以使用foreach循环迭代内部集合.
例如
public IEnumerable<UploadState> GetStates
{
get
{
return new List<UploadState>(m_states);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这些类应该实现IEnumerable接口,并调用GetEnumeratorList本身.
是否有首选方式,还是由开发人员负责?
如果您的类是自定义集合类,那么是的,它应该实现IEnumerable<T>. 在这种情况下,内部列表的公共属性将是多余的。想象一个简单的类:
public class People : IEnumerable<Person>
{
List<Person> persons = new List<Person>();
public IEnumerator<Person> GetEnumerator()
{
return persons.GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您的类不能像集合一样运行,则IEnumerable为其元素提供公共属性:
public class Flight
{
List<Person> passengers = new List<Person>();
public IEnumerable<Person> Passengers
{
get { return passengers; }
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,选择正确的设计始终取决于开发人员。
| 归档时间: |
|
| 查看次数: |
4182 次 |
| 最近记录: |