Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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#_Oop - Fatal编程技术网

C# 为什么要使用IEnumerable<;T>;需要实现IEnumerable

C# 为什么要使用IEnumerable<;T>;需要实现IEnumerable,c#,oop,C#,Oop,如果我只想使用通用版本IEnumerable,我不仅要实现IEnumerator GetEnumerator(),还要实现IEnumerator GetEnumerator(),后者似乎是多余的接口是在1.1.net framework中引入的。 但是只有2.0中的泛型版本(带有泛型)。所以,这是向后兼容性。存在只接受IEnumerable的遗留代码: void Method(IEnumerable list) { foreach(var item in list) {

如果我只想使用通用版本IEnumerable,我不仅要实现
IEnumerator GetEnumerator()
,还要实现
IEnumerator GetEnumerator()
,后者似乎是多余的

接口是在1.1.net framework中引入的。 但是只有2.0中的泛型版本(带有泛型)。所以,这是向后兼容性。存在只接受
IEnumerable
的遗留代码:

void Method(IEnumerable list)
{
    foreach(var item in list)
    {
        Console.WriteLine(item);
    }
}
因此,如果
IEnumerable
没有实现
IEnumerable
,您就不能在此方法中传递
List

接口是在1.1.net framework中引入的。 但是只有2.0中的泛型版本(带有泛型)。所以,这是向后兼容性。存在只接受
IEnumerable
的遗留代码:

void Method(IEnumerable list)
{
    foreach(var item in list)
    {
        Console.WriteLine(item);
    }
}

因此,如果
IEnumerable
没有实现
IEnumerable
,您就不能在这种方法中传递
List

基本上有两个原因:

  • 兼容性。很多遗留代码,可以处理
    IEnumerable
    ,但不能处理
    IEnumerable
    。是的,现代API被设计为使用泛型,但有时我们需要使用遗留API
  • 有些情况下,您希望枚举,但在设计时不关心对象类型或装箱<代码>IEnumerable在这里可以。数据绑定是最明显的一种

基本上,有两个原因:

  • 兼容性。很多遗留代码,可以处理
    IEnumerable
    ,但不能处理
    IEnumerable
    。是的,现代API被设计为使用泛型,但有时我们需要使用遗留API
  • 有些情况下,您希望枚举,但在设计时不关心对象类型或装箱<代码>IEnumerable在这里可以。数据绑定是最明显的一种

我通过在谷歌搜索
为什么IEnumerable需要实现IEnumerable找到了副本
我通过在谷歌搜索
为什么IEnumerable需要实现IEnumerable找到了副本