请考虑以下代码,这些代码会引发 CA2104: Do not declare read only mutable reference types.
public class Test
{
// This provokes CA2104: "Do not declare read only mutable reference types".
protected readonly ImmutableClass ImmutableMember;
}
public class ImmutableClass
{
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道一种方法将一个类标记为不可变的方式会抑制警告CA2104?
我试着装饰MutableClass而[ImmutableObject(true)]没有成功的希望(因为表格编辑器使用的属性非常清楚),而且确实它不起作用.
我假设Code Analysis在确定是否发出CA2104时使用已知的不可变类型列表,因此我们不能使用相同的方法.
我想即使你可以将一个类标记为不可变,编译器也无法实际检查它是否为真,但至少它可能是一个有用的指标.
无论如何,我有什么属性可以忽略吗?如果没有,则必须进行抑制.
目前似乎没有替代方法可以做到这一点.
我找到了一个有趣的博客,来自Joe Duffy("Windows上的并发编程"一书的作者)关于这种事情.
他从"想象我们有一个ImmutableAttribute"开始....... :)
这很有意思 - 他遇到了编写一些新的FxCop规则来分析属于不可变的类型的麻烦.
大家好我很困惑我是const long size =((long)int.Maxvalue+1)/4如何插入的...当我们定义static const long size =((long)int.Maxvalue+1)/4什么是readonly会员时会发生什么......