Керівництво c #, перевантаження операторів відносини і логічних операторів
C # --- Керівництво по C # --- Перевантаження операторів відносини і логічних операторів
Перевантаження операторів відносини
Оператори відносини, наприклад == і <, могут также перегружаться, причем очень просто. Как правило, перегруженный оператор отношения возвращает логическое значение true и false. Это вполне соответствует правилам обычного применения подобных операторов и дает возможность использовать их перегружаемые разновидности в условных выражениях. Если же возвращается результат другого типа, то тем самым сильно ограничивается применимость операторов отношения.
Зверніть увагу, що на перевантаження операторів відносини накладається таке важливе обмеження: вони повинні перевантажуватися попарно. Так, якщо перевантажується оператор <, то следует перегрузить и оператор>, і навпаки. Нижче наведені складені в пари перевантажуються оператори відносини:
І ще одне зауваження: якщо перевантажуються оператори == і! =, То для цього зазвичай потрібно також перевизначити методи Object.Equals () і Object.GetHashCode ().
Перевантаження операторів true і false
Ключові слова true і false можна також використовувати в якості унарних операторів для цілей перевантаження. Перенавантажувані варіанти цих операторів дозволяють визначити призначення ключових слів true і false спеціально для створюваних класів. Після перевантаження цих ключових слів як унарних операторів для конкретного класу з'являється можливість використовувати об'єкти цього класу для управління операторами if, while, for і do-while або ж в умовному вираженні.
Оператори true і false повинні перевантажуватися попарно, а не окремо. Нижче наведена загальна форма перевантаження цих унарних операторів:
Зверніть увагу на те, що і в тому і в іншому випадку повертається результат типу bool. Давайте модернізуємо попередній приклад, і додамо в нього перевантаження операторів true і false: