У меня есть вопрос, является ли это стандартом для использования IComparer в C #. Скажем, у меня есть ситуация, в которой есть три объекта Person: P1, P2 и P3. Скажем, я вызываю метод Compare, передавая P1 и P2, и результат равен 0. Это означает, что два человека должны быть отнесены к категории равных. Теперь скажите, что я вызываю метод Compare, передавая P2 и P3, и результат для этого также равен 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);