我有一个有区别的联盟,我希望使用像它这样的内置运算符> < compare max
。
[<CustomComparison>]
type SymbolType =
| A
| B
| C
| D
interface IComparable<SymbolType> with
member x.CompareTo y =
match x, y with
| A, A-> 0
| A, _ -> 1
| _, A-> -1
| _, _ -> 0
我知道我可以使用IComparable
,但是我必须进行null
检查,更糟糕的是我必须像(SymbolType) y
我认为的那样进行投射,这会很耗时。