Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык C# и основы платформы .NET.docx
Скачиваний:
36
Добавлен:
11.05.2015
Размер:
178.68 Кб
Скачать

5. Выражения и операции

Любое выражениев языке C# состоит изоперандовиопераций. Следующий список содержит допустимые операции1, разбитые на группы. Порядок групп соответствует приоритету операций. Операции одной группы имеют одинаковый приоритет.

1. Первичные операции

x.mДоступ к элементу типа

x(...)Вызов методов и делегатов

x[...]Доступ к элементу массива или индексатора

x++Пост-инкремент

x--Пост-декремент

new T(...)Создание объекта или делегата

new T(...){...}Создание объекта с инициализацией

new {...} Инициализация объекта анонимного типа

new T[...]Создание массива с элементами типаT

typeof(T)Получение для типаTобъектаSystem.Type

checked(x)Вычисление в контролируемом контексте

unchecked(x)Вычисление в неконтролируемом контексте

default(T)Получение значения по умолчанию для типаT

delegate {...}Описание анонимного метода

2. Унарные операции

+xИдентичность

-xОтрицание

!xЛогическое отрицание

~xБитовое отрицание

++xПре-инкремент

--xПре-декремент

(T)xЯвное преобразованиеxк типуT

sizeof(T)Размер в байтах для типа значенияT

await xАсинхронное ожидание завершенияx

3. Мультипликативные операции

x * yУмножение

x / yДеление

x % y Вычисление остатка

4. Аддитивные операции

x + yСложение чисел, сцепление строк и делегатов

x – y Вычитание

5. Операции сдвига

x << y Битовый сдвиг влево

x >> y Битовый сдвиг вправо

6. Операции отношения и проверки типов

x < yМеньше

x > yБольше

x <= yМеньше или равно

x >= yБольше или равно

x is TВозвращаетtrue, еслиxприводим к типуT

x as TВозвращаетx, приведённый к типуT, илиnull

7. Операции равенства

x == yРавно

x != y Не равно

8. Логическое AND

x & yЦелочисленное битовое AND, булево AND

9. Логическое XOR

x ^ yЦелочисленное битовое XOR, булево XOR

10. Логическое OR

x | yЦелочисленное битовое OR, булево OR

11. Условное AND

x && yВычисляетсяy, только еслиxравноtrue

12. Условное OR

x || yВычисляетсяy, только еслиxравноfalse

13. Операция проверки на null

x ?? yВозвращаетx, еслиxне равноnull. Иначе возвращаетy

14. Условие

x ? y : zЕслиxравноtrue, вычисляетсяy, иначеz

15. Операции присваивания и лямбда-выражений

x = y Присваивание

x op= y Составное присваивание, поддерживаются операции

*=/=%=+=-=<<=>>=&=^=|=

x => codeОписывает блок кодаcode

Поясним использование некоторых операций. Для проверки значений, получаемых при работе с числовыми выражениями, в C# предусмотрено использование контролируемого и неконтролируемого контекстов. Контролируемый контекстобъявляется в формеchecked операторный-блок, либо как операцияchecked(выражение). Если при вычислении в контролируемом контексте получается значение, выходящие за пределы целевого типа, то генерируется либо ошибка компиляции (для константных выражений), либо обрабатываемое исключение (для выражений с переменными).Неконтролируемый контекстобъявляется в формеunchecked операторный-блок, либо как операцияunchecked(выражение). При использовании неконтролируемого контекста выход за пределы целевого типа ведёт к автоматическому «урезанию» результата либо путём отбрасывания бит (целые типы), либо путём округления (вещественные типы). Неконтролируемый контекст применяется в вычислениях по умолчанию.

Арифметические операции +,-,*,/,%определены для всех числовых типов, за исключением 8- и 16-битовых целых типов. Для коротких целых типов компилятор выполняет неявное преобразование типов (при этом операция с целыми числами должна остаться операцией с целыми числами). Арифметические операции для типов с плавающей запятой не генерируют исключительных ситуаций при переполнении, потере точности или делении на ноль. В таких случаях получаются особые значения, определённые в виде константdouble.NaN,double.NegativeInfinity,double.PositiveInfinity(т.е. «не число», «минус бесконечность», «плюс бесконечность»).