C# 选择什么收集界面?

C# 选择什么收集界面?,c#,.net,C#,.net,系统首选哪种采集接口?我所说的系统是指存储库、服务等,所以我需要选择IEnumerable、ICollection、IList甚至可能是List 我想理论上使用IEnumerable会更好。但使用起来不太方便:例如,我必须使用GetElementAt方法而不是indexer 我当前的选择是IList,但我怀疑这个决定。如果您想允许索引器访问,您应该使用IList。一般规则是使用尽可能少的特定类型,该类型仍然满足所有使用要求。在你的情况下,这听起来像一个列表。(当然,IList没有List那么具体

系统首选哪种采集接口?我所说的系统是指存储库、服务等,所以我需要选择IEnumerable、ICollection、IList甚至可能是List

我想理论上使用IEnumerable会更好。但使用起来不太方便:例如,我必须使用GetElementAt方法而不是indexer


我当前的选择是IList,但我怀疑这个决定。

如果您想允许索引器访问,您应该使用
IList
。一般规则是使用尽可能少的特定类型,该类型仍然满足所有使用要求。在你的情况下,这听起来像一个列表。(当然,
IList
没有
List
那么具体)

这实际上取决于您希望为存储库、服务等的消费者提供何种访问类型

如果您只希望使用者阅读集合,请使用
IEnumerable
(没有可用的写入类型方法)

如果您希望消费者直接添加到集合中,则
ICollection
中的方法将为他们提供该选项

通常,我会尽可能频繁地将集合公开为
IEnumerable
。当用户想要向集合添加某些内容时,他们必须调用单独的方法,而不是直接写入集合本身。它使您有机会验证输入、执行其他检查等