C# 为什么实施IEnumerable<;T>;强制您也实现(非泛型)IEnumerable接口?
可能重复:C# 为什么实施IEnumerable<;T>;强制您也实现(非泛型)IEnumerable接口?,c#,generics,ienumerable,C#,Generics,Ienumerable,可能重复: 各位 我开始玩IEnumerable。。。实际上,是一个SOF“noob家庭作业问题”让我开始了这条线。是的,我很无聊 所以我坐下来,拿出一张快速的纸条,要一张数不清的纸条。问你是否想看我的代码,但这与我的问题并不相关。无论如何,很快齿轮开始转动(慢慢地,正如我的齿轮所知道的那样),并且。。。就我而言,我无法想象为什么实现IEnumerable接口也会迫使您公开(非泛型)IEnumerable接口 我刚刚在谷歌上搜索了大约半个小时,但没有发现任何东西能让我明白为什么必须公开非通用枚
各位 我开始玩IEnumerable。。。实际上,是一个SOF“noob家庭作业问题”让我开始了这条线。是的,我很无聊 所以我坐下来,拿出一张快速的纸条,要一张数不清的纸条。问你是否想看我的代码,但这与我的问题并不相关。无论如何,很快齿轮开始转动(慢慢地,正如我的齿轮所知道的那样),并且。。。就我而言,我无法想象为什么实现
IEnumerable
接口也会迫使您公开(非泛型)IEnumerable接口
我刚刚在谷歌上搜索了大约半个小时,但没有发现任何东西能让我明白为什么必须公开非通用枚举器。。。当我主动时,我不想这样做,因为我不希望非泛型代码诱骗它进入我的代码库,如果是这样,我希望它失败
微软的工程师是地球上最好的工程师之一,所以我知道这一设计决策肯定有一个非常好的理由(很可能不止一个)
所以,请有人能把我从痛苦中解救出来,并点亮我,好吗
到目前为止我发现了什么
-
- 这导致了杰伊·巴祖兹的回答:
- 第1部分:[
- 第2部分:[
- 第3部分:[
- 第4部分:[
干杯。基思。IEnumerable
IEnumerable
的通用函数失败的一个例子是Cast()
。在.net 4IEnumerable
之前,IEnumerable不支持通用差异。你阅读了我链接的问题中的答案吗,解释了其中的原因?是的,我通读了该线程中的所有答案,并与Hejlsberg进行了后续的博客讨论……有很多我不知道的地方ee with,可能是因为我不理解;-)简单地说:我不认为向后兼容总是可取的;泛型是一种范式转换,每个人都需要时间才能实现。我不禁怀疑Hejlsberg(几年后)是否仍然认为所有泛型集合都会理想地从那里继承(天生笨拙的)非通用对应物。