русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Перегрузка операций


Дата добавления: 2015-07-09; просмотров: 555; Нарушение авторских прав


Основная конструкция C# - объявление класса или структуры.

Классы и структуры есть типы. Тип характеризуется неизменяемым набором свойств и методов. Для встроенных типов определены множества преобразований (операций), которые кодируются с использованием предопределённого множества операций. Язык позволяет строить сложные выражения с использованием этих операций, причём результат выполнения (определения результирующего значения) зависит от типа составляющих сложное выражение элементарных выражений. Например, сложение целочисленных значений определяется и выполняется иначе, нежели сложение чисел с плавающей точкой.

Программист может строить сложные выражения с использованием символов арифметических, логических, операций сравнения и прочих операций на основе элементарных выражений встроенных типов.

Вновь объявляемые классы служат основой для создания объектов. Эти объекты в принципе ничем не отличаются от других объектов, в том числе от объектов-представителей элементарных аривметических типов. В частности, ссылки на такие объекты могут использоваться как элементарные выражения в выражениях более сложной структуры.

Для построения сложных выражений на основе элементарных выражений производных (объявляемых программиистом) типов C# предоставляет те же возможности, что и для выражений всех прочих типов. При этом главная проблема заключается в том, что алгоритм вычисления значения представленного операндами вновь объявляемого типа, в сочетании с символом операции ‘+’ (например) для операндов этого типа неизвестен. Семантика операции должна быть специальным образом определена программистом при определении класса.

Перегрузка операций в C# как раз и является способом объявления семантики операций, обозначаемых привычным набором символов операций. Перегрузка операций строится на основе общедоступных (public) статических (вызываемых от имени класса) функций-членов с использованием ключевого слова operator.



Не все операции множества могут быть переопределены подобным образом. Не все операции могутбыть перегружены. Некоторые операции могут перегружаться с ограничениями.

В таблице приводится соответствующая информация различных категорий символов операций:

 

Операция Перегружаемость
+, -, !, ~, ++, --, true, false Унарные символы операций, допускающие перегрузку.
+, -, *, /, %, &, |, ^, <<, >> Бинарные символы операций, допускающие перегрузку.
==, !=, <, >, <=, >= Операции сравнения перегружаются.  
&&, || Условные логические операции моделируются с использованием ранее переопределённых операций & и |.
[] Операции доступа к элементам массивов моделируются за счёт индексаторов.
() Операции преобразования реализуются с ипользованием ключевых слов implicit и explicit.
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= Операции не перегружаются, по причине невозможности перегрузки операции прсвоения.
=, ., ?:, ->, new, is, sizeof, typeof Операции, не подлежащие перегрузке.

 

Префиксные операции ++ и -- перегружаются парами.

Операции сравнения перегружаются парами. Если перегружается операция ==, также должна перегружаться опеация !=. То же самое относится к парам < и >, <= и >=.



<== предыдущая лекция | следующая лекция ==>
This в контексте конструктора | Синтаксис объявления операторной функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.104 сек.