c# - 选择什么采集接口(interface)?

标签 c# .net

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

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

我目前的选择是 IList,但我对此决定表示怀疑。

最佳答案

这实际上归结为您希望允许您的存储库、服务等的消费者访问什么类型。

如果您只希望消费者通读该系列,请使用 IEnumerable<T> (没有写类型的方法可用)。

如果您希望消费者直接添加到集合中,那么 ICollection<T> 中的方法会给他们的。

一般来说,我尝试将集合公开为 IEnumerable<T>尽我所能。当用户想要向集合中添加内容时,他们必须调用单独的方法而不是直接写入集合本身。它使您有机会验证输入、执行其他检查等。

关于c# - 选择什么采集接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796483/

相关文章:

c# - 考虑到夏令时,如何添加时间

c# - Ninject 依赖解析器

c# - 为什么我从这段代码片段中得到 'The remote server returned an error: (401) Unauthorized.'?

c# - 有没有办法使用 Serilog 提供自定义属性格式?

c# - 你能从没有参数的属性中省略括号吗?

c# - 使用事件处理程序与覆盖事件触发方法

c# - 带有 WebBrowser 控件的 Excel CustomTaskPane - 键盘/焦点问题

c# - 在 ItemsControl 内的 DataTemplate 内的 Button 的 WPF Databinding ContextMenu

c# - 如何将一串要点(带有标题和正文内容)拆分成一个多维数组?

java - Metro 服务和 WCF 客户端之间的传输安全