ito*_*son 97
IEnumerable仅提供最小的"可迭代"功能.你可以遍历序列,但这就是它.这有缺点 - 例如,使用IEnumerable计算元素或获取第n个元素是非常低效的 - 但它也有优点 - 例如,IEnumerable可能是无穷无尽的序列,如素数序列.
Array是一个固定大小的集合,具有随机访问权限(即您可以将其编入索引).
List是一个可变大小的集合(即你可以添加和删除元素)随机访问.
IList是一个接口,它将列表功能(计数,添加,删除,索引器访问)从List,BindingList,ObservableCollection等各种具体类中抽象出来.
Mar*_*son 16
IEnumerable是一个允许迭代项集合的接口(例如,通过foreach关键字).
数组是.NET内在函数.它包含相同类型的项目,但它具有固定的大小.使用x元素创建数组后,它无法增长或缩小.
IList定义列表的接口,并实现IEnumerable.
List实现IList接口; 它是一种具体的清单.
.NET列表和数组之间的区别在于列表可以添加元素 - 它们会变得足够大以容纳所有必需的项目.该列表在内部将其存储在一个数组中,当数组不再大到可以容纳所有元素时,将创建一个新数组并复制项目.
IList和数组都实现了IEnumerable.这就是接口工作的方式 - 类实现契约并以类似的方式运行,并且可以作为结果进行类似处理(您知道该类实现IEnumerable,您不需要知道方法或者为什么).我建议你阅读界面等等.
生成IEnumerable集合是懒惰的.例:
public IEnumerable<int> GetTwoInts()
{
yield return 1;
yield return 2;
}
public void Something()
{
var twoInts = GetTwoInts();
}
Run Code Online (Sandbox Code Playgroud)
在方法Something中,对GetTwoInts()的调用实际上不会导致执行GetTwoInts方法,因为枚举永远不会被迭代.
| 归档时间: |
|
| 查看次数: |
49115 次 |
| 最近记录: |