C# 什么是IEnumerable<;IEnumerable<&燃气轮机&燃气轮机;方法

C# 什么是IEnumerable<;IEnumerable<&燃气轮机&燃气轮机;方法,c#,C#,我所看到的c语言中的一些方法需要IEnumerable。当方法需要IEnumerable作为参数时,我可以传递一维数组或列表。我认为通过同样的逻辑,我可以将二维数组传递为IEnumerable,但我的编译器说它不一样。例如,我可以将哪些数据类型传递给这些方法?例如IEnumerable是整数枚举的枚举 这意味着根列表的每个元素都是int的列表 如果我们写: IEnumerable<IEnumerable<int>> listOfLists = GetItems();

我所看到的c语言中的一些方法需要
IEnumerable
。当方法需要
IEnumerable
作为参数时,我可以传递一维数组或列表。我认为通过同样的逻辑,我可以将二维数组传递为
IEnumerable
,但我的编译器说它不一样。例如,我可以将哪些数据类型传递给这些方法?

例如
IEnumerable
是整数枚举的枚举

这意味着根列表的每个元素都是int的列表

如果我们写:

IEnumerable<IEnumerable<int>> listOfLists = GetItems();
事实上,如果我们宣布:

var items = new List<List<int>>();
这里它不是一个多维数组,而是一个锯齿状数组:


IEnumerable只是一个接口,它由许多类/类型实现,其中两个是List和Array(您可以找到List)

因此,例如,当编译器告诉您必须传递IEnumerable参数时,它可以是一个列表(取决于“某个类”是否指字符串…如果它指的是您创建的类,则必须传递一个列表…)或字符串[](这是一个字符串数组,也实现了此接口)。 如果必须传递IEnumerable,则意味着必须传递实现IEnumerable接口的对象层。您可以有以下内容: 列表 字符串[][]


还有其他…

长话短说,它是一个允许您在某些对象上执行foreach循环的接口

var items = new List<List<int>>();
var items = int[][];