F#编译器为我们做了很多工作。默认情况下,它实现IComparable<T>
。
但是,代码令人尴尬
type Either = | This | That
收益:
[CompilerGenerated]
public sealed override int CompareTo(Either obj)
{
if (this != null)
{
if (obj != null)
{
int tag = _tag;
int tag2 = obj._tag;
if (tag == tag2)
{
return 0;
}
return tag - tag2;
}
return 1;
}
if (obj != null)
{
return -1;
}
return 0;
}
为什么这里有支票this != null
?!