我对这是否是在 C# 中使用 IComparer 的标准有疑问。假设我有一个情况,其中有三个 Person 对象:P1、P2 和 P3。假设我调用了传入 P1 和 P2 的 Compare 方法,结果为 0。这实质上意味着应该将两个人归类为相等。现在假设我调用了传入 P2 和 P3 的 Compare 方法,结果也是 0。同样,这意味着两个人是平等的。从逻辑上讲,可以假设 P1 和 P3 也相等;但是,Compare 方法可以实现,但是有人决定实现它。那么在这种情况下,以 P1 和 P3 也返回 0 的方式实现它是否是一种标准?
这是我要问的代码:
// Assume these are initialized properly
Person p1 = null, p2 = null, p3 = null;
IComparer<Person> comparer = null;
// Compare person 1 to person 2 and result is 0
Debug.Assert(comparer.Compare(p1, p2) == 0);
// Compare person 2 to person 3 and result is 0
Debug.Assert(comparer.Compare(p2, p3) == 0);
// Would this be a fair assumption that person 1 and person 3 would also be 0?
Debug.Assert(comparer.Compare(p1, p3) == 0);