gpt4 book ai didi

c# - 不可变类与不可变结构

转载 作者:可可西里 更新时间:2023-11-01 09:05:38 28 4
gpt4 key购买 nike

我有一个类,一开始是可变的,但后来我把它变成了不可变的。我应该将其更改为 struct 吗?选择一个而不是另一个需要考虑哪些因素?我的特殊情况是一个 Point 类型类(它表示自定义坐标系中的一个坐标),它由 4 个 int 字段组成,加上一些属性来访问相同的不同方式的数据。我注意到 String 是一个类并且是不可变的,因此必须有一些用例。

最佳答案

通常,不,您不应该将其更改为结构。仅仅因为它是不可变的并不意味着它自动成为一个很好的结构候选者。

结构应该很小。对于您的四个整数,它刚好达到建议的 16 字节限制,结构的性能开始下降。

一个结构应该代表某种单一的实体。也许您的类(class)会这样做,但根据您的描述,这听起来不太可能。

结构比类更难正确实现。它应该对比较之类的事情表现良好,因此要实现的东西比类所期望的要多。

除非你有充分的理由将其实现为一个结构,比如性能问题,否则你应该将你的类保持为一个类。

关于c# - 不可变类与不可变结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com