我收到此错误消息,我无法弄清楚原因!
Error 1 'Exo5Chap12.ShortCollection<T>' does not implement interface member
'System.Collections.IEnumerable.GetEnumerator()'.
'Exo5Chap12.ShortCollection<T>.GetEnumerator()' cannot implement
'System.Collections.IEnumerable.GetEnumerator()' because it does not have the matching
return type of 'System.Collections.IEnumerator'.
E:\MyFolders\Dev\c#\Chapter12\Exo5Chap12\Exo5Chap12\exo5.cs 9 18 Exo5Chap12
Run Code Online (Sandbox Code Playgroud)
以下是具有GetEnumerator()实现的代码.怎么了?
public class ShortCollection<T> : IList<T>
{
protected Collection<T> innerCollection;
protected int maxSize = 10;
public IEnumerator<T> GetEnumerator()
{
return (innerCollection as IEnumerator<T>).GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
Don*_*nie 12
正如其他人所说,你需要实施IEnumerable以及IEnumerable<T>.但是,由于IEnumberable<T>自己实现IEnumerable这是微不足道的,只需调用你的泛型GetEnumerator():
public class ShortCollection<T> : IList<T>
{
protected Collection<T> innerCollection;
protected int maxSize = 10;
public IEnumerator<T> GetEnumerator()
{
return innerCollection.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
我假设您有实际添加和删除的方法,innerCollection为了简洁而将它们排除在外,因为它们与手头的问题无关.
IEnumerable和IEnumerable<T>是不同的接口,您的代码必须同时实现这两个接口。您的代码仅实现了 GetEnumerator() IEnumerable<T>,但没有实现 GetEnumerator() IEnumerable。您应该考虑安装 ReSharper,它可以轻松修复此类错误。