Ammar Shaukat Ответов: 1

Почему всегда используйте icomparable< T> В C# для сравнения объектов ?


Я очень новичок в языке C#. C# предоставляет два похожих интерфейса с именем IComparable Интерфейс и Интерфейс IComparer для сравнения.
Работая над ним, я нашел еще два варианта использования IComparable<t> В C#.
1-сортировка пользовательских коллекций объектов
2-перегрузка операторов типа <, >, <=, >= и т. д.
взгляните на код, в котором я использую IComparable<point> для перегрузки операторов < и >.
public int CompareTo(Point other)
       {
           if (this.X > other.X && this.Y > other.Y)
           {
               return 1;
           }
           if (this.X < other.X && this.Y < other.Y)
           {
               return -1;
           }
           else
           {
               return 0;
           }
       }

Это класс Point, который реализует этот интерфейс.
class Point : IComparable<Point>

И в последнем здесь два метода, которые перегружают операторы < и >.
public static bool operator < (Point p1 , Point p2)
        {
            return (p1.CompareTo(p2) < 0);
        }
        public static bool operator >(Point p1, Point p2)
        {
            return (p1.CompareTo(p2) > 0);
        }

Помимо этих длинных строк кода и текста, мой вопрос очень прост. Нужно ли всегда использовать этот интерфейс для сортировки объектов и перегрузки таких операторов, которые использует для сравнения и т. д.

Что я уже пробовал:

Я искал в интернете и на многих разных сайтах, все обсуждают
1-Что такое IComparable< t> В C#
ОПЕРАЦИОННАЯ
2-Как использовать IComparable< t> В C#
Никто не обсуждает
> зачем это нужно в сценариях реального времени? тем не менее, мы должны написать дополнительную строку кода для реализации этого интерфейса, а не использовать наши собственные методы, которые просто написать для небольших классов.

CHill60

Представьте, что у вас есть класс [автомобилей] и вы хотите сравнить, какие автомобили "лучше". Делать что-то вроде If [Rolls Royce] > [Austin Mini] имеет смысл только в том случае, если вы определили, что именно > средства в терминах [автомобиля]

1 Ответов

Рейтинг:
5

OriginalGriff

Интерфейсы - это одновременно контракт и" членский клуб": когда вы добавляете интерфейс в свой класс, вы подаете заявку на" членство в клубе", а вступительный взнос-это контракт, который вы должны выполнить, чтобы присоединиться. Это означает реализацию свойств, методов и тому подобного, которые определяет интерфейс.

Когда вы вступаете в клуб, вы получаете преимущества членства - в случае IComparable это означает, что метод сортировки может работать без необходимости делать что-либо еще: Сортировка списков с помощью интерфейса IComparable и IComparer в .NET[^] почитайте - это все довольно хорошо объясняет.