具有如下代码,得到一个编译错误- "...没有实现接口成员'System.Collections.IEnumerable.GetEnumerator()'".
如何实现GetEnumerator的非泛型版本?
public class Giraffe { }
public class Pigeon { }
public class Sample : IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
{
return null;
}
IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
{
return null;
}
}发布于 2014-08-20 10:10:14
尝试:
public class Pets :IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
{
return null;
}
IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
{
return null;
}
public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
}发布于 2014-08-20 11:11:05
如果我正确理解了您的问题,下面是一个如何在类中实现非泛型枚举器的示例
public class Sample : IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
{
return null;
}
IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
{
return null;
}
IEnumerator IEnumerable.GetEnumerator()
{
return null; //your logic for the enumerator
}
}由于通用IEnumerable<T>继承了非通用IEnumerable,因此实现IEnumerable.GetEnumerator将为其定义一个实现。
为了更清楚起见,您还可以将类声明为public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>
示例
public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
{
return null;
}
IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
{
return null;
}
IEnumerator IEnumerable.GetEnumerator()
{
return null; //your logic for the enumerator
}
}https://stackoverflow.com/questions/25395691
复制相似问题