【发布时间】:2013-05-24 07:03:36
【问题描述】:
我正在使用 FxCop,它显示“不要公开通用列表”的警告,建议使用 Collection<T> 而不是 List<T>。首选它的原因,我知道所有这些东西,如this SO post 和MSDN 以及我读过的更多文章中所述。
但我的问题是,我很少有方法可以进行如此繁重的计算,并且方法接受 List<T> 的参数,这在性能方面应该更快更好。但 FxCop 也为此发出警告。所以一种选择是我应该将参数声明为Collection<T>,然后在方法内部使用ToList(),然后使用它。
那么优化了哪一个?
“抑制这种情况的警告”或“在参数中使用Collection<T>,然后在方法本身中使用ToList()”。
【问题讨论】:
-
IList
有什么问题? -
IList
没有提供 AddRange() & sort 之类的方法 -
如果您需要速度,您可以使用
List<>,只要您不希望调用者知道集合的元素何时更改。我们有很多对速度至关重要的计算(对大量 ECG 数据进行分析),这些计算速度太慢了,因此我们在某些情况下使用List<>甚至普通数组。我想我是说我认为List<>适合数字。我说的是List<double>和List<int>,即原语列表。 -
你确定,当使用
Collection<T>而不是List<T>时,你真的会有性能滞后吗?我的意思是,在你的特殊情况下?另外,为什么不使用SuppressMessageAttribute,如果你真的知道,你在做什么? -
要求“更好”的选项会导致主观回答。您能否重新措辞或澄清一下,以便我们提供客观答案?
标签: c# generics collections