继承 IEnumerable<string> 导致错误 CS0738
Inheriting IEnumerable<string> cause error CS0738
public class PatchInfo : IEnumerable<string>
{
...
public IEnumerator<string> GetEnumerator()
{
LinkedList<string> list = new LinkedList<string>();
...
return list;
}
}
接口名称是 "IEnumerable" 所以我想 return 类型 "IEnumerator" 可能会更正。
但是会导致编译错误
CS0738 : ... does not implement interface member... because it does
not have the matching return type of 'System.Collections.IEnumerator'.
怎么了?
IEnumarable 继承IEnumarable。所以你还需要实现 IEnumerator IEnumerable.GetEnumerator()
方法。
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
此外,您的代码不会编译,因为 GetEnumerator
方法应该 return IEnumerator
而不是
IEnumarable
。使用 GetEnumarator 方法获取 IEnumerator
.
public class TestEnumarable : IEnumerable<string>
{
public IEnumerator<string> GetEnumerator()
{
LinkedList<string> a = new LinkedList<string>();
return a.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
public class PatchInfo : IEnumerable<string>
{
...
public IEnumerator<string> GetEnumerator()
{
LinkedList<string> list = new LinkedList<string>();
...
return list;
}
}
接口名称是 "IEnumerable" 所以我想 return 类型 "IEnumerator" 可能会更正。
但是会导致编译错误
CS0738 : ... does not implement interface member... because it does not have the matching return type of 'System.Collections.IEnumerator'.
怎么了?
IEnumarableIEnumerator IEnumerable.GetEnumerator()
方法。
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
此外,您的代码不会编译,因为 GetEnumerator
方法应该 return IEnumerator
而不是
IEnumarable
。使用 GetEnumarator 方法获取 IEnumerator
.
public class TestEnumarable : IEnumerable<string>
{
public IEnumerator<string> GetEnumerator()
{
LinkedList<string> a = new LinkedList<string>();
return a.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}