У меня есть класс. вещь, что этот класс предназначен для представления, таков, что мы можем говорить о таких вещах, которые равны друг другу, и мы также можем разработать схему для ранжирования их для целей сравнения.Должен ли я реализовать IEquatable или IComparable?
Однако, так бывает, что редко бывает, чтобы кто-то чувствует необходимость ранжировать эти вещи, но один часто нужно проверить, если две такие вещи равны.
Итак, я могу реализовать как IEquatable
для своего класса, так и IComparable
. В то время как IComparable
предоставляет некоторые дополнительные функции, маловероятно, что кто-то будет заботиться об этой дополнительной функциональности. Ни один из них, по-видимому, не дает явного преимущества, логически или функционально.
Какой интерфейс следует использовать, IEquatable
, IComparable
или оба? Зачем? (Я просто задаюсь вопросом об изменениях в рамках каркаса либо интерфейса)
This question похоже, но ответы только указывают на очевидное, что мне не помогает.
В случае, если вам интересно, класс предназначен для обозначения нуклеотида. Нуклеотиды можно легко отождествлять, но их также можно сравнить (например, в алфавитном порядке).
Есть ли вероятность, что вам нужно будет их отсортировать? Я знаю, что вы сказали, что это маловероятно, но если вы должны дать класс кому-то другому, можете ли вы подумать о причине, которую они когда-либо должны были бы отсортировать? – JNYRanger
Я уверен, что можно придумать надуманный сценарий, в котором, возможно, потребуется сортировать их по алфавиту (для получения удобочитаемого вывода с хорошим форматированием) или, возможно, сортировать их по некоторым биохимическим свойствам (например, массе). Но это было бы надуманно, и если бы я должен был реализовать «IComparable», мне пришлось бы писать документацию (без этого метод был бы бесполезен) для методов, которые очень редко использовались. – Superbest