Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Основы перегрузки операторов



Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки операторов используется ключевое слово operator, позволяющее создать операторный метод, который определяет действие оператора, связанное с его классом.

Существует две формы методов operator: одна используется для унарных операторов, а другая — для бинарных. Общий же формат (для обоих случаев) таков:

// Общий формат перегрузки для унарного оператора,

public static тип_возврата operator ор{

тип_параметра операнд)

{

// операции

}

// Общий формат перегрузки для бинарного оператора,

public static тип_возврата operator op{

тип_параметра1 операнд1,

тип_параметра2 операнд2)

{

// операции

}

Здесь элемент ор — это оператор (например " + " или " / "), который перегружается. Элемент тип_возврата — это тип значения, возвращаемого при выполнении заданной операции. Несмотря на то что можно выбрать любой тип, тип возвращаемого значения чаще всего будет совпадать с типом класса, для которого этот оператор перегружается. Такая корреляция облегчает использование перегруженного оператора в выражениях. Для унарных операторов операнд передается в элементе операнд, а для бинарных — в элементах операнд1 и операнд2.

Для унарных операторов тип операнда должен совпадать с классом, для которого определен оператор. Что касается бинарных операторов, то тип хотя бы одного операнда должен совпадать с соответствующим классом. Таким образом, С#-операторы нельзя перегружать для классов, не созданных вами. Например, вы не можете перегрузить оператор "+" для типов int или string. И последнее: параметры операторов не должны использовать модификатор ref или out.





Дата публикования: 2015-06-12; Прочитано: 165 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...