c# - 结构的不变性

标签 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/

相关文章:

c# - 使用类来保存与软件消息相关的字符串

c# - 从 ExecuteStoredProcedureAsync 获取超过 100 个文档

.net - 通过 .NET 在 Mac 上获取视频分辨率

c - 如何正确计算结构体数组的大小?我这样做对吗?

c - OpenCL 内核参数结构具有零值

c# - 更改几个表中的列参数

c# - 为什么将图像写入流会产生与直接保存到文件不同的结果?

c# - 从 .NET 词典中删除与谓词匹配的多个项目的最佳方法?

c# - 如果我使用 AllocHGlobal 分配一些内存,我是否必须使用 FreeHGlobal 释放它?

c - 在 C 中初始化一个结构