这个问题已经在这里有了答案 :
8年前关闭。
可能重复: 为什么可变结构是邪恶的?
我在很多地方都读过它,包括在这里最好使结构不可变。
这是什么原因呢?我看到许多Microsoft创建的可变结构,例如xna中的结构。BCL中可能还有更多。
不遵循此准则的利弊是什么?
结构应该代表 价值 。值不变。数字12是永恒的。
但是,请考虑:
Foo foo = new Foo(); // a mutable struct foo.Bar = 27; Foo foo2 = foo; foo2.Bar = 55;
现在foo.Bar和foo2.Bar是不同的,这通常是意外的。特别是在诸如属性之类的场景中(幸运的是编译器会检测到此情况)。而且还有收藏等;您如何明智地对其进行变异?
使用可变结构,数据丢失太容易了。