我有一个实现了索引器的类。 我希望能够在 this 上运行foreach循环,但它说我必须实现Enumerator接口。这让我实现了两种方法:
#region IEnumerable implementation
public IEnumerator<Type> GetEnumerator() {
throw new NotImplementedException();
}
#endregion
#region IEnumerable implementation
IEnumerator IEnumerable.GetEnumerator() {
throw new NotImplementedException();
}
#endregion
这个类以这种方式构建:
我希望能够在类中的 this 上运行foreach循环,这样我就可以使用索引器的get和set逻辑来设置数组字段
这就是为什么我需要实现GetEnumerator方法,但我不知道那里需要什么样的实现。
感谢您的帮助。
注意: How do I implement IEnumerable<T>线程没有帮助我,我已经读过了。唯一的实现是返回数组的枚举器。
答案 0 :(得分:2)
这是实现IEnumerable的一个非常简单的例子:
public class SomeEnumerable : IEnumerable<string>
{
private string[] values = new string[] { "foo", "bar" };
#region Enumerator
private IEnumerable<string> GetValues()
{
foreach(var s in values)
{
yield return s;
}
}
#endregion Enumerator
#region IEnumerable implementation
public IEnumerator<string> GetEnumerator() {
return GetValues().GetEnumerator();
}
#endregion
#region IEnumerable implementation
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
#endregion
}
如果你正在做一些不寻常的事情,只需用你需要的东西替换GetValues()里面的逻辑。