在C#中尝试使用record
类型时,它似乎可以很好地用于构建类似于判别联合的数据结构,我只是想知道我是否遗漏了一些将来会后悔的问题。例如:
abstract record CardType{
// Case types
public record MaleCardType(int age) : CardType{}
public record FemaleCardType : CardType{}
// Api
public static MaleCardType Male(int age) => new MaleCardType(age);
public static FemaleCardType Female => new FemaleCardType();
}
var w = CardType.Male(42);
var x = CardType.Male(42);
var y = CardType.Male(43);
var z = CardType.Female;
Assert.Equal<CardType>(w,x); //true
Assert.Equal<CardType>(x,y); //false
Assert.Equal<CardType>(y,z); //false
看起来比构建具有单例和等式比较器的抽象类要简单得多,但我是否错过了不想这样做的原因?