Yog*_*esh 15 c# generics collections
我正在使用FxCop,它显示"不要公开通用列表"的警告,建议使用Collection<T>而不是List<T>.之所以这是首选的原因,我知道所有这些东西,正如这篇SO帖子和MSDN中提到的以及我经历过的更多文章.
但我的问题是,我有很少的方法可以进行如此繁重的计算,并且方法接受的参数List<T>应该更快,性能更好.但是,FxCop也会对此发出警告.所以一个选项是我应该将参数声明为Collection<T>,然后ToList()在方法中使用然后使用它.
"取消对此案例的警告" 或 " Collection<T>在参数中使用,然后ToList()在方法本身内部使用".
Mar*_*age 15
编写代码分析/ FxCop规则是为了支持框架创建者(Microsoft创建了许多框架).外部方使用框架,在设计公共接口时应该小心.如果您没有编写供外部各方使用的框架,您可以简单地忽略不会为您提供价值的规则.
但是,存在此规则的原因之一是在类上公开集合有点困难.通常,集合中的元素由包含类拥有,在这种情况下,如果允许客户端修改用于存储聚合项的集合,则会违反封装.通过返回,List<T>您允许客户端以多种不同方式修改集合.但通常你想跟踪集合中的项目.例如,添加一个新元素可能需要在包含类等中进行一些额外的簿记.当你返回时,你会失去这种控制权,List<T>除非你在返回时复制它(但是然后客户应该明白他们只能得到一份副本收集和修改将被忽略).
总而言之,您可以通过避免公开类List<T>,并更明确地了解如何添加,修改和删除聚合元素来改进您的类设计.但是如果你赶时间并想要制定一些代码,那么使用它List<T>可能正是你完成工作所需要的.