为什么实现IEnumerable<;T>;强制您也实现(非通用)IEnumerable接口

本文关键字:IEnumerable 实现 接口 lt gt 为什么 | 更新日期: 2023-09-27 17:54:34

可能重复:
为什么IEnumerable<T>从IEnumerable继承?

各位,

我开始尝试实现IEnumerable。。。事实上,这是一个SOF"noob家庭作业问题",让我开始了这条线。是的,我很无聊。

所以我坐下来弹出一个IEnumerable的快速SSCCE。问你是否想查看我的代码,但这与我的问题并不相关。不管怎样,很快齿轮就开始转动了(慢慢地,就像我的齿轮一样(。。。就我而言,我无法想象WHY实现IEnumerable<T>接口也会迫使您公开(非通用(IEnumerable接口。

我刚刚在谷歌上搜索了大约半个小时,但没有发现任何东西能启发我为什么必须公开非泛型枚举器。。。当我主动不想这样做时,因为我不想让非泛型代码将其诱骗到我的代码库中,如果这样做了,我希望它失败。

微软的工程师们,IMHO,是这个星球上最好的工程师之一,所以我知道这个设计决定一定有一个非常好的理由(很可能不止一个(。

所以,请有人能让我摆脱痛苦,让我振作起来吗?

到目前为止我发现了什么

  • 谷歌:实现IEnumerable
  • SOF:您将如何实现IEnumerator接口?

    • 这导致了周的回答:(部分引用如下(

Raymond Chen最近的一系列博客文章("C#中迭代器的实现及其后果"(是一个了解最新情况的好地方。

  • 第1部分:[http://blogs.msdn.com/oldnewthing/archive/2008/08/12/8849519.aspx][1]
  • 第2部分:[http://blogs.msdn.com/oldnewthing/archive/2008/08/13/8854601.aspx][2]
  • 第3部分:[http://blogs.msdn.com/oldnewthing/archive/2008/08/14/8862242.aspx][3]
  • 第4部分:[http://blogs.msdn.com/oldnewthing/archive/2008/08/15/8868267.aspx][4]

因此,我快速浏览了"第1部分",很快发现我的大脑产生了null,我的有限状态机试图备份我的wazoo。我也很快意识到我越来越偏离轨道了。

我应该问什么问题

是的,我的问题是什么?当然,这一定是问和回答(多次(以前。。。但我找不到。我想我甚至不知道该问正确的问题。Sooo。。。谷歌搜索词会做得很好。

提前感谢大家抽出时间。我真的很感激。

干杯。基思。

为什么实现IEnumerable<;T>;强制您也实现(非通用)IEnumerable接口

IEnumerable<T> 实现IEnumerable,所以它必须定义。。。