gpt4 book ai didi

c# - IEnumerable 和数组的关系

转载 作者:行者123 更新时间:2023-11-30 20:16:10 24 4
gpt4 key购买 nike

是什么让 .Net IEnumerable 如此特别,以至于像数组这样的编译器类型可以作为参数传递给它,因为它是一个类库接口(interface)。后台是否有某种继承?

当数组可以互换地替换集合或 IEnumerable 作为参数时实际发生了什么:

public void DoJob(IEnumerable<Job> jobs)
{
}

像这个方法调用:

Job job = new Job();
DoJob(new [] { job });

最佳答案

既然你是从 Java 过来的,我先告诉你,在 C# 中,有一个统一的类型系统,每个类型都派生自 object。 ,不像在 Java 中有特殊的“原语”。

所以在 C# 中,数组只是另一种类型。谁说他们不能实现接口(interface)?他们能!编译器提供的只是一些用于创建它们的语法。实际上,数组的类型是 System.Array .

这是它的声明:

public abstract class Array : ICloneable, IList, ICollection, 
IEnumerable, IStructuralComparable, IStructuralEquatable

参见 IEnumerable在那里?

编辑:

对于 IEnumerable<T> ,我们可以在语言规范中找到它:

第 12.1.2 节:

A one-dimensional array T[] implements the interface System.Collections.Generic.IList (IList for short) and its base interfaces.

IList<T>工具 IEnumerable<T> .

关于c# - IEnumerable 和数组的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com