C# IEnumerable问题

Leonard__Zhu 2014-08-07 02:33:09
public class ShortList<T>:IList<T>
{
protected IList<T> innerCollection;
public ShortList()
{
innerCollection = new List<T>;

}

......
Public IEnumerable<T> GetEnumerator()
{
return innerCollection.GetEnumerator();

}

IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();

}

}

省略了一部分代码。
IList<T>是继承IEnumerable和IEnumerable<T>接口的,可是为什么这两个的返回值由两个类调用各自的GetEnumerator()方法?而且为什么第一个要加Public,第二个不用加?
...全文
247 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nishuine332 2014-08-07
  • 打赏
  • 举报
回复
楼上
effun 2014-08-07
  • 打赏
  • 举报
回复
IList<T>同时继承了IEnumerable<T>和IEnumerable这两个接口,前都是泛型后者不是,但这两个接口都有一个相同名称的成员GetEnumerator,但返回的值却是不一样的,前者返回的是IEnumerator<T>,后者是IEnumerator。 -------------割---------------- 当你的类型要实现IList<T>时,必须实现接口上的所有成员,但因为GetEnumerator有泛型和非泛型两个版本,如果两个方法都采用隐式实现是不行的,只能一个隐式实现(带public的那个),一个显式实现,或者两个都用显式实现。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧