![]() |
1
3
由于mutablereferencetypes类出现在问题中,因此您不能真正从任何外部调用程序对其进行更改,因为somestringbuilder字段是私有的。 然而,类本身可能会改变字段。目前没有,但在以后的迭代中可以。 下面是一个示例方法:
调用mutate方法将改变类,因为SomeStringBuilder现在已经改变了。 不变性不仅关系到代码的当前体现,还关系到保护自己不受将来错误的影响。并非所有的类都需要是不可变的,但是如果您选择创建一个不可变的类型,那么保持一致是最安全的。 |
![]() |
2
6
readonly 表示不能更改参考后期构造。
fxcop的官方立场是,它建议只声明不能修改的类型
我不同意fxcop的这条规则。只要一个人明白这只是一种执行,即引用可能不会改变后构造,那么就没有混淆。
请注意,值类型由
|
![]() |
3
0
.NET具有此处允许的不可变引用类型列表,
抱怨的是,您正在构造的不是不可变的,尽管静态构造函数被调用一次,类被初始化一次,但这是保持不变的,其余的都是可变的。一个线程可以调用
声明它
|
![]() |
4
0
不能更改引用,但对(可变)对象的任何调用都会更改其状态。
因此,由于
基本上,
|
![]() |
5
0
您不会更改对象的值。这就是规则的要点。声明为readonly的任何字段都应为infact,readonly。具有只读可变引用是一种矛盾修饰。如果你能改变字段“指向”的值,那么它就不再是只读的了。将某个对象A的所有成员的值赋给由字段表示的某个对象B,或者简单地将A赋给该字段(当它们属于同一类型时),这两者之间实际上没有任何功能上的区别,但是当字段声明为只读时,只有一个有效,但是因为您可以有效地改变要表示的值由字段指定,它是已声明的,不是真正只读的 |
![]() |
Emanuel Pinho · 无不变目标push的角度变化检测策略 7 年前 |
![]() |
MingtyeP · 如何使用不可变js取消移动列表中的每个元素? 7 年前 |
![]() |
Brannon · 让赋值运算符在申报时工作 7 年前 |
![]() |
Javallion · JAVA中的不可变对象初始化 7 年前 |
![]() |
Ankush Pandit · 字符串与字符串数组元素之间的比较 7 年前 |
![]() |
plamkata__ · Swift到Kotlin,管理不可变列表 7 年前 |