【发布时间】:2021-11-17 10:52:41
【问题描述】:
在使用具有自动实现的 get-only 属性的类与 C# 9 记录时,不可变有什么不同吗?我想编译器会在后台支持字段(?)和魔法来支持语法糖,但是说下面的类型是数据传输对象,它们一旦反序列化就不可变了吗?除了更短的语法之外,记录与类相比是否有任何不变性增强?
例如
public class RgbColor
{
public RgbColor(int r, int g, int b) { /* do assign here ... */ }
public int Red { get; }
public int Green { get; }
public int Blue { get; }
}
对
public record RgbColor (
int Red,
int Green,
int Blue
);
【问题讨论】:
-
属性没有神奇的深拷贝不变性,仅仅因为它们是记录的一部分,不。当然,如果你想这样做,一个好主意是让所有类型都涉及到记录。
标签: c# immutability record