Я знаю, что это старый вопрос, но если вы собираетесь перегрузить метод == или Object.Equals, вам также следует перегрузить оператор реверсирования! =.
И в этом случае, поскольку вы сравниваете внутренние числа, вам следует перегружать другие операторы сравнения <,>, <=,> =.
Люди, которые будут использовать ваш класс в будущем, будь то сторонние потребители или разработчики, которые перехватят ваш код, могут использовать что-то вроде CodeRush или Refactor, что автоматически «перевернет» логику (также называемую обращением условно), а затем сгладить его, чтобы вырваться из синдрома 25 вложенных if. Если их код делает это, и вы перегружаете оператор ==, не перегружая оператор! =, Это может изменить предполагаемое значение вашего кода.