【发布时间】:2010-11-16 22:55:59
【问题描述】:
尝试在此处的项目上运行运行代码分析,并收到许多警告,内容如下:
CA1002:Microsoft.Design:将“SomeClass.SomeProtectedOrPublicProperty”中的“ListSomeType>”更改为使用 Collection、ReadOnlyCollection 或 KeyedCollection
为什么我应该使用Collection<T> 而不是List<T>?当我查看 msdn 文档时,它们似乎几乎相等。在阅读了警告的错误帮助后,我发现
System.Collections.Generic.List(T)_是为性能而非继承而设计的通用集合,因此不包含任何虚拟成员。
但这究竟意味着什么?而我应该怎么做?
我是否应该继续在内部使用List<T>,然后在属性中返回new Collection<T>(someList)?还是我应该开始使用Collection<T> 而不是List<T>?
【问题讨论】:
-
详细解释见this blog post
-
顺便说一下,如果你想知道为什么 Collection 在System.Collections.ObjectModel then read this by Krzysztof Cwalina。
-
@ThomasLevesque 的链接现已损坏,但博客文章现在可以在此处找到:blogs.msdn.microsoft.com/codeanalysis/2006/04/27/…
-
Dan 的链接也坏了。 ObjectModel 历史现在在这里:docs.microsoft.com/en-us/archive/blogs/kcwalina/…
标签: c# collections encapsulation