перевантаження операцій

Як відомо, в мові С # тип змінної визначає набір значень, які вона може зберігати, а також набір операцій, які можна виконувати над цієї змінної. Наприклад, над значенням змінної типу int програма може виконувати додавання, віднімання, множення і ділення. З іншого боку, використання оператора "плюс" для складання двох примірників реалізованого програмістом класу позбавлене сенсу.

Коли в програмі визначається клас, то по суті визначається новий тип даних. Тоді мова C # дозволяє визначити операції, відповідні цього нового типу даних.

Перевантаження операційсостоіт в зміні сенсу операції при використанні його з певним класом.

Наприклад, нехай є:

myclass a, bc; ... // a, b, c-екземпляри класу myclass

c = a + b; // перевантажена операція складання для класу myclass

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

[Атрибути] спеціфікаториoperatorтело операції,

operator - ключове слово, яке визначає перевантажену операцію

тіло операції-дії, які виконуються при використанні операції в вираженні

Перевантажувати можна тільки стандартні операції.

Алгоритм перевантаження операції:

Визначити клас, якому дана операція буде призначена.

Для перевантаження операцій використовується ключове слово operator.

Перевизначаючи операцію, необхідно вказати метод, який C # викликає кожен раз, коли клас використовує перевантажену операцію. Цей метод, в свою чергу, виконує відповідну операцію.

Правила перевантаження операції:

Операція повинна бути оголошена як public static

Параметри в операцію повинні передаватися за значенням (НЕ ref, що не out)

Двох однакових перевантажених операцій в класі не повинно бути

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

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

До унарним операціями, які можна перевантажувати в мові С # відносяться:

true, false - зазвичай перевантажуються для типів SQL

publicstaticтіп_возвр_значoperatorунарная_операція (один параметр),

де параметр - це клас, для якого перевантажується дана операція

public static myclass operator ++ (myclass x)

public static int operator + (myclass x)

public static bool operator true (myclass x)

Перевантажена операція повертає:

унарні + і -. величину будь-якого типу

++,-- величину типу класу

true, false - величину типу bool

Префіксние і постфіксні ++ і - не розрізняються при перевантаженні.

Приклад перевантаження унарних операцій на прикладі класу

Схожі статті