为了账号安全,请及时绑定邮箱和手机立即绑定

结构的不变性

结构的不变性

MMTTMM 2019-12-02 10:58:23
我在很多地方都读过它,包括在这里最好使结构不可变。这是什么原因呢?我看到许多Microsoft创建的可变结构,例如xna中的结构。BCL中可能还有更多。不遵循此准则的利弊是什么?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

最大的缺点是事情不会像您期望的那样表现-特别是如果可变性来自直接值和其中的引用类型的混合。

老实说,我不记得我曾经看到过人们在使用可变结构时在新闻组中提出的所有奇怪问题,但是这些原因确实存在。可变结构会引起问题。远离。

编辑:我刚刚找到了我之前写过的关于此主题的电子邮件。它详细说明了一点:

  • 从哲学上来说是错误的:结构应该代表某种基本价值。这些基本上是一成不变的。您不必更改数字5。可以将变量的值从5更改为6,但是您不能在逻辑上对值本身进行更改。

  • 这实际上是一个问题:它会产生许多奇怪的情况。如果可以通过接口进行更改,那就特别糟糕。然后,您可以开始更改装箱的值。ck 我见过很多新闻组帖子,这是由于人们试图使用可变结构而遇到问题。我看到了一个非常奇怪的LINQ示例,该示例失败了,因为它List<T>.Enumerator是一个结构。


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 584 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信