我的类实现了IEnumerable.并且这两种编码GetEnumerator方法的方法可以编译:
public IEnumerator GetEnumerator()
{
yield return Database[id].GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
和
public IEnumerator GetEnumerator()
{
return Database[DatabaseId].GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
其中Database [id]是List.这些实现之间有什么区别吗?
编译的原因是因为您不清楚可枚举的是什么.如果你把它变成通用的话就会变得更加明显:
public IEnumerator<Foo> GetEnumerator()
{
return Database[id].GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
VS
public IEnumerator<IEnumerator<Foo>> GetEnumerator()
{
yield return Database[id].GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
你的yield return版本没有产生结果:它产生迭代器 - 它是一个迭代器的迭代器,一个枚举器的枚举器.而不是一个好办法.基本上,"不要那样做".
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |