【发布时间】:2010-04-30 08:13:10
【问题描述】:
在我的 VS2008 SP1、.NET 3.5 SP1 项目中,我有包含不同属性的不同类。 我经常使用 C#3.0 自动属性。
其中一些属性需要是集合。因为我想让它变得简单,所以我将ReadOnlyCollection<T> 用于这些属性。
我不想使用IEnumerable<T>,因为我想随机访问元素。
我使用代码分析(FxCop 规则)并收到 CA2227 警告。
我不明白为什么ReadOnlyCollection<T> 应该有一个 set 方法,而它不能被改变...... set 方法只能做属性可以做的事情。
例子:
using System.Collections.ObjectModel;
namespace CA2227
{
public class MyClass
{
public ReadOnlyCollection<int> SomeNumbers { get; set; }
}
}
CA2227:Microsoft.Usage:通过删除属性设置器将“MyClass.SomeNumbers”更改为只读。 C:\Users...\Visual Studio 2008\Projects\CA2227\MyClass.cs 7 CA2227
【问题讨论】:
标签: c#-3.0 code-analysis fxcop visual-studio-2008-sp1 readonly-collection