<分区>
Possible Duplicate:
Why are mutable structs evil?
我在包括此处在内的很多地方都读到过,最好将结构设置为不可变。
这背后的原因是什么?我看到许多 Microsoft 创建的可变结构,例如 xna 中的结构。 BCL 中可能还有更多。
不遵循此指南的利弊是什么?
标签 c# .net struct immutability
<分区>
Possible Duplicate:
Why are mutable structs evil?
我在包括此处在内的很多地方都读到过,最好将结构设置为不可变。
这背后的原因是什么?我看到许多 Microsoft 创建的可变结构,例如 xna 中的结构。 BCL 中可能还有更多。
不遵循此指南的利弊是什么?
最佳答案
结构应该代表值。值不会改变。数字 12 是永恒的。
但是,请考虑:
Foo foo = new Foo(); // a mutable struct
foo.Bar = 27;
Foo foo2 = foo;
foo2.Bar = 55;
现在foo.Bar和foo2.Bar不一样了,这往往是意想不到的。特别是在像属性这样的场景中(幸运的是编译器检测到了这一点)。还有收藏品等;你如何明智地改变它们?
可变结构的数据丢失太容易了。
关于c# - 结构的不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608542/