收集的正确做法

本文关键字: | 更新日期: 2023-09-27 17:51:04

我已经在谷歌上搜索了一段时间了,但无法找到一个可以理解的定义,即在哪里使用以下集合以及在哪种情况下它们更合适:

  • 列表项
  • IEnumerable
  • 队列
  • 数组
  • ArrayLists
  • <
  • 索引属性/gh>

我正在使用c#,并给你一点关于我的教育背景:在我的限制下,我可以创建一个图片管理器,搜索包含图片路径和描述等的CSV文件。

我现在正在考虑做MCSD证书,并希望在这里的差异打下坚实的基础。

TIA

马丁

收集的正确做法

简短回答:

  • List是一种非常通用的集合。如果您没有特殊要求,您可以使用列表。
  • 列表项不是列表。这是列表中的一项。
  • IEnumerable list不是Collection类型。这是一个大多数集合都实现的接口。它基本上定义了迭代集合的能力。
  • Queue是一种特殊的集合。你在后面加东西,把前面的拿掉。很适合工作列表。先进先出。
  • 数组是集合,您必须事先知道项目的数量。它们提供对特定索引位置的快速访问。
  • ArrayList。我从不使用它们。类型列表。
  • 索引属性是编写如下代码的能力。所以访问集合中的某个位置。var item = list[4];

但正如一些评论所提到的:这是一个很长的故事,非常非常短。

首先是相互构建的接口:

  • IEnumerable :提供仅向前的枚举项方式。无法添加或删除项目。没办法知道物品的数量。无法通过随机索引访问项目。商品没有保证订单。
  • ICollection : IEnumerable :添加物品计数功能。增加添加/删除/清除列表的能力。无法通过随机索引访问项目。商品没有保证订单。
  • IList : ICollection :增加随机索引访问项的能力。物品有订单

这是你需要的概念起点:

可列举的& lt;收集& lt;

列表
| 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将很快结束这个问题。

相关文章:
  • 没有找到相关文章