系统首选的采集接口是什么?我所说的系统指的是存储库、服务等,所以我需要选择IEnumerable、ICollection、IList或者甚至是列表。
我想从理论上讲,使用IEnumerable会更好。但是它的使用不太方便:例如,我必须使用GetElementAt方法而不是索引器。
我目前的选择是IList,但我对这个决定持怀疑态度。
发布于 2011-07-23 05:52:37
这实际上取决于您希望为存储库、服务等的消费者提供哪种类型的访问权限。
如果您只打算让使用者读取整个集合,请使用IEnumerable<T> (没有可用的写类型方法)。
如果您希望消费者直接添加到集合中,那么ICollection<T>中的方法将为他们提供此功能。
通常,我会尽可能频繁地将集合公开为IEnumerable<T>。当用户想要向集合中添加一些东西时,他们必须调用一个单独的方法,而不是直接写入集合本身。它使您有机会验证输入,执行其他检查等。
发布于 2011-07-23 05:51:29
如果你想允许索引器访问,你应该使用IList<T>。一般规则是使用仍然满足所有使用要求的最不特定的类型。在你的例子中,这听起来像是一个列表。(当然,IList<T>没有List<T>那么具体)
https://stackoverflow.com/questions/6796483
复制相似问题