关于c#:为什么要使用ICollection< T>

Why to use ICollection<T> instead of List<T> and if i use ICollection<T>, then how can i use AddRange,Insert and other list methods

本问题已经有最佳答案,请猛点这里访问。

我正在使用fxcop工具进行代码分析,它显示了一个严重的错误,比如"不要公开generice列表",它建议不要使用列表对象,而是尝试使用ICollection。

我试图用ICollection替换列表,但是有太多地方我有insert和add range方法,无论如何我需要它们来实现我的业务逻辑。

"因此,我如何在ICollection上使用insert、addrange和其他列表方法而不进行类型转换或使用to list()方法,因为如果我必须使用这些方法,那么我为什么要用ICollection替换列表?"

如果你不理解我的问题,请不要在任何重复的地方做标记。


公开列表不是一个好的实践,因为您可以使用诸如add之类的方法修改原始集合,更好地公开IEnumerable。此接口不允许更改集合,我的优势在于,您可以将逻辑与管理集合保持在一个位置。