Хотя это не строго гарантировано, я уверен, что метод Sort в List никогда не вызовет ваш метод сравнения для сравнения объекта с самим собой, если только этот объект не появится в списке несколько раз.Я основываю этот вывод на том факте, что List.Sort реализован с использованием алгоритма QuickSort (согласно MSDN), который никогда не сравнивает , как правило, не предполагает сравнения одного и того же элемента с самим собой (ини один из других задокументированных алгоритмов сортировки, о которых я могу думать).(Правка. Похоже, что реализация Microsoft сравнивает этот элемент с самим собой. См. Принятый ответ выше.)
Однако, хорошая практика кодирования будет диктовать, что ваша реализация IComparer должна быть способна обрабатывать передачу одного и того же объекта в обоихпараметры, так как в противном случае ваша реализация не полностью выполняет контракт, определенный IComparer.Вероятно, это будет работать для вашего сценария, но вы будете полагаться на детали реализации метода sort (которые могут измениться в будущем), и вы не сможете использовать реализацию IComparer в других сценариях, где такого нетгарантией (или, что еще хуже, вы или кто-то еще пользуетесь ею и, возможно, создаете труднодоступную ошибку).