我希望我的类型能够实现IEnumerable<string>
。我试图在Nutshell中关注C#,但出了点问题:
public class Simulation : IEnumerable<string>
{
private IEnumerable<string> Events()
{
yield return "a";
yield return "b";
}
public IEnumerator<string> GetEnumerator()
{
return Events().GetEnumerator();
}
}
但是我得到了构建错误
错误1'EventSimulator.Simulation'未实现接口成员'System.Collections.IEnumerable.GetEnumerator()'。 'EventSimulator.Simulation.GetEnumerator()'无法实现'System.Collections.IEnumerable.GetEnumerator()',因为它没有匹配的返回类型'System.Collections.IEnumerator'。
答案 0 :(得分:34)
你错过了IEnumerator IEnumerable.GetEnumerator()
:
public class Simulation : IEnumerable<string>
{
private IEnumerable<string> Events()
{
yield return "a";
yield return "b";
}
public IEnumerator<string> GetEnumerator()
{
return Events().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
答案 1 :(得分:5)
IEnumerable要求您实现typed和generic方法。
在msdn docs的社区部分,它解释了为什么你需要两者。 (为了向后兼容是基本上给出的原因)。