一尘不染

为什么可变结构“邪恶”?

c#

在这里关于SO的讨论之后,我已经读过好几次关于可变结构是“邪恶的”的评论(就像在对这个问题的回答中)。

C#中可变性和结构的实际问题是什么?


阅读 316

收藏
2020-05-19

共1个答案

一尘不染

结构是值类型,这意味着它们在传递时将被复制。

因此,如果您更改副本,则仅更改该副本,而不更改原始副本,也不更改周围可能存在的任何其他副本。

如果您的结构是不可变的,那么所有通过值传递而产生的自动副本将是相同的。

如果要更改它,则必须通过使用修改后的数据创建该结构的新实例来有意识地做到这一点。(不是副本)

2020-05-19