Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么实施IEnumerable<;T>;强制您也实现(非泛型)IEnumerable接口?_C#_Generics_Ienumerable - Fatal编程技术网

C# 为什么实施IEnumerable<;T>;强制您也实现(非泛型)IEnumerable接口?

C# 为什么实施IEnumerable<;T>;强制您也实现(非泛型)IEnumerable接口?,c#,generics,ienumerable,C#,Generics,Ienumerable,可能重复: 各位 我开始玩IEnumerable。。。实际上,是一个SOF“noob家庭作业问题”让我开始了这条线。是的,我很无聊 所以我坐下来,拿出一张快速的纸条,要一张数不清的纸条。问你是否想看我的代码,但这与我的问题并不相关。无论如何,很快齿轮开始转动(慢慢地,正如我的齿轮所知道的那样),并且。。。就我而言,我无法想象为什么实现IEnumerable接口也会迫使您公开(非泛型)IEnumerable接口 我刚刚在谷歌上搜索了大约半个小时,但没有发现任何东西能让我明白为什么必须公开非通用枚

可能重复:

各位

我开始玩IEnumerable。。。实际上,是一个SOF“noob家庭作业问题”让我开始了这条线。是的,我很无聊

所以我坐下来,拿出一张快速的纸条,要一张数不清的纸条。问你是否想看我的代码,但这与我的问题并不相关。无论如何,很快齿轮开始转动(慢慢地,正如我的齿轮所知道的那样),并且。。。就我而言,我无法想象为什么实现
IEnumerable
接口也会迫使您公开(非泛型)IEnumerable接口

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

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

所以,请有人能把我从痛苦中解救出来,并点亮我,好吗

到目前为止我发现了什么
    • 这导致了杰伊·巴祖兹的回答:(下面部分引用)
雷蒙德·陈(Raymond Chen)最近的一系列博客文章(“C#中迭代器的实现及其后果”)是一个了解最新情况的好地方

  • 第1部分:[
  • 第2部分:[
  • 第3部分:[
  • 第4部分:[
所以我快速浏览了《第一部分》,很快发现我的大脑产生了空值,我的有限状态机试图备份我的wazoo。我也很快意识到我越来越偏离轨道

我应该问什么问题? 是的,我的问题是什么?当然这个问题以前一定被问过并回答过(很多次)了……但我找不到。我想我甚至不知道该问什么问题。所以……谷歌搜索词会很好

提前感谢大家抽出时间,我非常感谢


干杯。基思。

IEnumerable实现IEnumerable,所以它必须定义…

@Jon,是的,关闭它…这(或多或少)我想知道的是,谢谢……除了我对这个决定背后的设计思想感兴趣……这本身就是主观的。没有
IEnumerable
的通用函数失败的一个例子是
Cast()
。在.net 4
IEnumerable
之前,IEnumerable不支持通用差异。你阅读了我链接的问题中的答案吗,解释了其中的原因?是的,我通读了该线程中的所有答案,并与Hejlsberg进行了后续的博客讨论……有很多我不知道的地方ee with,可能是因为我不理解;-)简单地说:我不认为向后兼容总是可取的;泛型是一种范式转换,每个人都需要时间才能实现。我不禁怀疑Hejlsberg(几年后)是否仍然认为所有泛型集合都会理想地从那里继承(天生笨拙的)非通用对应物。