我一直在试图总结我的头围绕此的FxCop侵犯“DoNotDeclareReadOnlyMutableReferenceTypes”不可变的只读引用类型和FxCop的违规:不申报只读可变引用类型
MSDN:从MSDN http://msdn.microsoft.com/en-us/library/ms182302%28VS.80%29.aspx
代码这将导致此冲突:
namespace SecurityLibrary
{
public class MutableReferenceTypes
{
static protected readonly StringBuilder SomeStringBuilder;
static MutableReferenceTypes()
{
SomeStringBuilder = new StringBuilder();
}
}
}
乔恩的回答here和here,据我所知,该领域保持参照对象(在这种情况下, SomeStringBuilder)是只读的,而不是对象本身(它由new StringBuilder()
创建)
因此,考虑这个例子,一旦字段有引用它,我将如何更改对象本身?我喜欢Eric Lippert's example如何更改只读数组,并希望看到类似的任何其他可变参考类型
不错。太棒了。完善。 – ram 2010-02-16 16:48:22
只是一个小小的错误:该领域是**保护**,而不是私人的,因此它从外部是绝对*可变的。我猜这个*是FXCop反对的。 – 2010-02-16 18:57:11
@Konrad鲁道夫:很好!我只看了第一个关键字并注意到它不是访问修饰符,因此必须默认为默认(原文如此)。我没有注意到关键字已被切换。 – 2010-02-16 19:29:42