Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
57.08 Кб
Скачать

16. Перегрузка унарных операторов.

Унарные операторы - это те, которые имеют только один операнд (параметр). Типичные примеры унарных операторов - это унарный минус (меняющий знак на противоположный) и оператор инкремента ++.

Рассмотрим перегрузку унарных операторов на примере рассмотренного на прошлом уроке класса Vector. А именно, добавим в наш класс унарный минус, который будет менять вектор с координатами x и y на вектор с координатами -x и -y. Для этого добавьте в наш класс Vector следующие строки:

public static Vector operator -(Vector v){Vector res = new Vector(-v.x, -v.y);return res;}

Обратите внимание, что при перегрезке унарных операторов (как, впрочем, и преперегрузке бинарных), мы должны поставить модификатор static.

17. Перегрузка бинарных операторов.

Известно, что в Си-шарп существует ряд операторов для работы со встроенными типами данных. Это операторы «+», «-», «!», «==», «!=» и т.д. Например, бинарный оператор «+» выполняет операцию сложения над численными типами данных. Этот же самый оператор над строками выполняет конкатенацию (склеивание двух строк). Это происходит потому, что оператор «+» перегружен в классе String.

Простыми словами, перегрузка оператора - это реализация своего собственного функционала этого оператора для конкретного класса.

Перегрузка оператора реализуется похожим способом на перегрузку методов. Здесь используется ключевое слово operator. Общая структура перегрузки операторов имеет следующий вид:

Перегрузка бинарного* оператора:

public static [возвращаемый_тип] operator [оператор]([тип_операнда1] [операнд1], [тип_операнда2] [операнд2]) {//функционал оператора}

Модификаторы public и static являются обязательными. На месте [оператор] может стоять любой оператор, который можно перегрузить. Не все операторы в Си-шарп разрешается перегружать. Ниже наведены операторы которые можно перегружать, и те которые нельзя:

Можно перегружать Бинарные операторы: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <, >, <=, >=

Нельзя перегружать [] – функционал этого оператора предоставляют индексаторы () – функционал этого оператора предоставляют методы преобразования типов +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= краткие формы оператора присваивания будут автоматически доступны при перегрузке соответствующих операторов (+, -, * …).

18. Функция оператор как член класса.

В языке C# оператор — это элемент программы, который применяется для одного или нескольких операндов в выражении или инструкции. Операторы, в которых используется один операнд, например оператор инкремента (++) или new, называются унарными. Операторы, в которых используются два операнда, например арифметические операторы (+,-,*,/), называются бинарными. Для одного оператора — условного (?:) — используются три операнда, и такой оператор является единственным троичным оператором в C#.

В Си-шарп есть три условных оператора: «if-else», «switch» и «?:» - тернарный оператор.

Тернарный оператор «?:»

Этот оператор используется для сокращения объема кода. Им можно заменять простые по сложности операторы if-else. Тернарный оператор имеет такую структуру:

логическое выражение ? выражение1 : выражение2

Пример использования тернарного оператора «?:» в той же программе для проверки числа на чётность:

static void Main(string[] args)

{ int a; Console.WriteLine("Введите число:");a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine( a % 2 == 0 ? "Число чётное" : "Число нечётное" ); Console.ReadKey();}