我可以用一种可以在CompareTo方法中使用的方式比较两个任意引用吗?
本文关键字:方式 两个 比较 引用 任意 方法 一种 我可以 CompareTo | 更新日期: 2023-09-27 17:53:30
我正在为一个结构体编写IComparable<T>.CompareTo(T)
的实现。我正在做一个成员明智的比较(即d = a.CompareTo(other.a); if (d != 0) { return d; }
等),但其中一个成员是一个类(让我们称之为Y
),不实现IComparable
或有任何其他合理的比较方式,所以我只是想比较引用(在这种情况下,我知道Y
的所有实例都是唯一的)。是否有一种方法可以产生适合在比较方法中使用的int
?
比较查找顺序关系的引用是没有意义的。只有寻找相等才有意义。
您的声明
没有实现IComparable或have其他合理的比较
的方法
似乎与查找
相反。一种将产生一个的方法适合在a中使用的整型比较法
如果不能合理地比较对象的排序,最好将它们完全排除在比较逻辑之外。
比较Object.GetHashCode()
的结果对于我的目的来说足够好了(我只关心引用相等性,不管在哪里排序不相等。我希望T
的实例具有Y
作为成员的相同实例,在排序结果中彼此相邻)。我的T.CompareTo()
使用以下帮助器:
static int Compare(object a, object b)
{
if (a == null)
{
return b == null ? 0 : 1;
}
if (b == null)
{
return -1;
}
return a.GetHashCode().CompareTo(b.GetHashCode());
}