![]() |
1
21
我
完全同意你的意见
和我
做
有时使用
举个例子:我可能有一些
对我来说,这通常是比使用私人财产更好的选择。
换句话说,如果我有这个:
那我还是可以设置
另一方面,这:
使它
清晰无误
那个
所以我站在你这边。人们应该避免使用
|
![]() |
2
25
很自然,如果一个字段是只读的,您将不能更改该值或 有什么关系吗 . 如果我知道酒吧是foo的一个只读字段,我显然不能说
但我可以说
如果对象的支撑条实际上是可变的。微软只是建议用不可变的对象来支持只读字段,以此来反对这种微妙的、违反直觉的行为。 |
![]() |
3
7
我看了一下 框架设计指南 书(第161-162页),它基本上说明了你已经注意到了什么。Joe Duffy的另一个评论解释了指导方针的理由-D’raison-d’t——tre:
我个人认为关键词
我想最好是
为了补救这种不幸的情况,制定了指导方针。我认为它的建议是合理的
人类
观点(并不总是明显的,哪些类型是可变的,而且它们不是没有查找它们的定义,并且这个词暗示了深度不变),我有时希望,当涉及到声明常量时,C ^将提供与C++所提供的类似的自由,在这里你可以定义。
|
![]() |
4
2
微软有一些这样特别的建议。另一个立即想到的是不要在公共成员中嵌套泛型类型,比如
至于只读字段,我尽量避免使用公共字段,而不是使用属性。我认为这方面也有一些建议,但更重要的是,有时当一个字段不起作用而属性起作用时(主要与数据绑定和/或可视化设计器有关)。通过使所有公共领域的财产,我避免任何潜在的问题。 |
![]() |
5
1
最后,它们只是指导方针。我知道一个事实,微软的员工经常不遵守所有的指导方针。 |
![]() |
6
1
您正在寻找的语法是由C++/CLI语言支持的:
第一个常量使被引用对象不可变,第二个常量使引用不可变。后者相当于c_中的readonly关键字。试图回避会产生编译错误:
然而,它是烟雾和镜子。不可变性由编译器验证,而不是由clr验证。另一种托管语言可以同时修改这两种语言。这是问题的根源,clr只是不支持它。 |
![]() |
Emanuel Pinho · 无不变目标push的角度变化检测策略 7 年前 |
![]() |
MingtyeP · 如何使用不可变js取消移动列表中的每个元素? 7 年前 |
![]() |
Brannon · 让赋值运算符在申报时工作 7 年前 |
![]() |
Javallion · JAVA中的不可变对象初始化 7 年前 |
![]() |
Ankush Pandit · 字符串与字符串数组元素之间的比较 7 年前 |
![]() |
plamkata__ · Swift到Kotlin,管理不可变列表 7 年前 |