C# 非泛型IEnumerable和泛型IEnumerable之间有什么区别<;T>;?

C# 非泛型IEnumerable和泛型IEnumerable之间有什么区别<;T>;?,c#,generics,syntax,ienumerable,C#,Generics,Syntax,Ienumerable,很抱歉问了这么一个模糊的问题,但我已经找了一天中最好的时间,我读了一篇又一篇的文章(这里有很多问题),但就是找不到一个简单易懂的答案 我(想我)知道IEnumerable的用途,但我就是不明白当它用泛型类型参数定义时意味着什么,例如: IEnumerable<int> test = method(); IEnumerable test=method(); 这简直快把我逼疯了!请让我摆脱痛苦,解释一下它的含义吧?我只是想到了IEnumerable,就像我想到了列表一样,我想这更自然

很抱歉问了这么一个模糊的问题,但我已经找了一天中最好的时间,我读了一篇又一篇的文章(这里有很多问题),但就是找不到一个简单易懂的答案

我(想我)知道IEnumerable的用途,但我就是不明白当它用泛型类型参数定义时意味着什么,例如:

IEnumerable<int> test = method();
IEnumerable test=method();

这简直快把我逼疯了!请让我摆脱痛苦,解释一下它的含义吧?

我只是想到了
IEnumerable
,就像我想到了
列表一样,我想这更自然一些。需要注意的是,
IEnumerable
的功能不如
列表
,而且本质上它只是一个可以枚举的整数

你要找的单词是“泛型”,您给出的示例是IEnumerable用作int类型项的泛型。这意味着您使用的IEnumerable集合是强类型的,只包含int对象,而不是任何其他类型的对象


谷歌“C#generics IEnumerable”,你会找到你想要的所有信息。

IEnumerable意味着它可以在foreach循环中使用

可以以下形式使用:

foreach(var item in items)
{
   Console.WriteLine(item);
}

IEnumerable
基本上是对象的集合。它有一个方法
GetEnumerator()
,允许您迭代枚举表中的所有对象


IEnumerable
基本上是整数的集合。它有一个方法
GetEnumerator()
,允许您迭代枚举表中的所有整数

IEnumerable test=method()
表示
method()
正在从某处获取一个集合if整数。它可以是一个列表、一个数组或其他一些数据类型,但它肯定是它们的一组,它们都是整数,您可以遍历它们


这篇文章可能也会有帮助:

一个
IEnumerable
有一个
GetEnumerator
方法,它将返回一个
IEnumerator
,其
当前的
方法将返回一个
对象
IEnumerable
有一个
GetEnumerator
方法,该方法将返回一个
IEnumerator
,其
Current
方法将返回一个
T
。如果您事先知道枚举器将返回的对象的预期类型,通常最好使用泛型形式


另一个区别是,
IEnumerator
继承了
IDisposable
,它允许使用枚举器完成的代码调用
Dispose
,而不必担心是否支持它。相比之下,当使用非通用的
IEnumerator
时,有必要测试它是否可以
IDisposable
,如果可以,则调用
Dispose
。请注意,使用非通用形式的
IEnumerable
/
IEnumerator
并不能免除调用
Dispose
的要求。例如,将vb样式的集合强制转换为
IEnumerable
,然后在不调用
Dispose
的情况下调用
GetEnumerator
100000次将非常缓慢(很多秒,甚至在i7上),除非发生垃圾收集。每次调用后处理
IEnumerator
,速度会提高100倍以上。

我真的不喜欢这种类比。列表假定所有项目都位于一个位置。其中,作为一个
IEnumerable
,它只表示您可以按某种顺序获取所有项。这就像电话簿和互联网之间的区别。我可以从任何一个地方得到芝加哥水管工的所有电话号码,但在电话簿中,他们已经在一个列表中了——而在
IEnumerable
或互联网上,他们可以是任何人,我只需要知道如何找到他们——尽管我没有投你反对票,我只是觉得你的答案需要更清楚一点。user689466正在寻找一种理解IEnumerable的方法。很明显,两者之间存在差异——这只是一个容易理解的概念的起点,一旦他开始摸索,他就可以理解这两者之间的微妙之处了好吧,我想我现在明白了,我没有意识到这可能是一个收藏,我只是不明白它是如何运作的。是否有一个好的资源可以显示比较IEnumerable/list/array的优点/缺点,因为我真的想了解更多+1(如果可以!)列表和数组都实现
IEnumerable
System.collections.generic
中的所有泛型集合实现
IEnumerable
。你可能对这个帖子感兴趣:谢谢。。。作为答案。。。你可能也想在你的主要答案中编辑/放置该链接,因为这确实让我现在完全理解了。