我已经谷歌搜索了一段时间知道,无法找到一个可理解的定义,在哪里使用以下集合,在哪种情况下,它们更适合:
我正在使用C#并向您介绍我的教育背景:在我的极限我可以创建一个图片管理器,搜索包含图片路径和描述等的CSV文件。
我现在正在研究MCSD证书,并希望在这里找到差异的坚实基础。
TIA
马丁
答案 0 :(得分:1)
简短回答:
var item = list[4];
但正如一些评论所提到的那样:它的篇幅很长很短。
答案 1 :(得分:0)
首先是相互构建的接口:
IEnumerable
:提供枚举项目的仅限转发方式。无法添加或删除项目。无法知道项目的数量。无法通过随机索引访问项目。物品没有保证订单。ICollection : IEnumerable
:增加了解项目数量的功能。添加添加/删除/清除列表的功能。无法通过随机索引访问项目。物品没有保证订单。IList : ICollection
:添加通过随机索引访问项目的功能。物品有订单这是您需要的概念起点:
可数<收集<列表
| Use | IEnumerable | ICollection | IList |
|-----------------|-------------|-------------|-------|
| Enumerate | Yes | Yes | Yes |
| Count | | Yes | Yes |
| Add/Remove | | Yes | Yes |
| Clear | | Yes | Yes |
| Has order | | | Yes |
| Access by index | | | Yes |
您的变量通常应使用最适合您需要的接口。
如果您只需要一组员工,并且您不需要更改列表,也不需要关心该订单:
IEnumerable<Employee> employees = GetEmployees();
如果您需要添加/删除商品的功能,但您仍然不关心订单:
ICollection<Awards> awards = GetStackoverflowAwards("Heffernan");
如果您关心物品出现的顺序:
IList<Answers> topAnswers = GetTopAnswers("Heffernan", 500);
然后有实现这些接口的类。
这些是您必须实例化以获取接口的具体实现。
我将不再在这里打字,因为意气风发的grumps很快就会关闭这个问题。