Керівництво c #, основи перевантаження операторів

У C #, подібно будь-якій мові програмування, є готовий набір лексем, що використовуються для виконання базових операцій над вбудованими типами. Наприклад, відомо, що операція + може застосовуватися до двох цілим, щоб дати їх суму:

Тут немає нічого нового, але чи замислювалися ви коли-небудь про те, що одна і та ж операція + може застосовуватися до більшості вбудованих типів даних C #? Наприклад, розглянемо такий код:

По суті, функціональність операції + унікальним чином базуються на представлених типах даних (рядках або цілих в даному випадку). Коли операція + застосовується до числовим типам, ми отримуємо арифметичну суму операндів. Однак коли та ж операція застосовується до строкових типів, виходить конкатенація рядків.

Мова C # надає можливість будувати спеціальні класи і структури, які також унікально реагують на один і той же набір базових лексем (на кшталт операції +). Майте на увазі, що абсолютно кожну вбудовану операцію C # перевантажувати не можна. У наведеній нижче таблиці описано можливості перевантаження основних операцій:

Перевантаження унарних операторів

Унарні оператори перевантажуються таким же чином, як і бінарні. Головна відмінність полягає, звичайно, в тому, що у них є лише один операнд. Давайте модернізуємо попередній приклад, доповнивши перевантаження операцій ++, -, -:

Керівництво c #, основи перевантаження операторів

Виконання операцій з вбудованими в C # типами даних

Для будь-якого заданого класу і оператора є також можливість перевантажити сам операційний метод. Це, зокрема, потрібно для того, щоб дозволити операції з типом класу і іншими типами даних, в тому числі і вбудованими. Давайте додамо наступну перевантаження в попередній приклад:

Керівництво c #, основи перевантаження операторів

Як підтверджує наведений вище результат, коли оператор + застосовується до двох об'єктах класу MyArr, то складаються їх координати. А коли він застосовується до об'єкта типу MyArr і строковому значенням, то повертається рядок з поточними координатами об'єкта.

Схожі статті