Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретический_курс.doc
Скачиваний:
36
Добавлен:
10.11.2019
Размер:
7.68 Mб
Скачать

12. Выражения запросов

Аналогичные правила в общем случае относятся и к выражениям запроса.

13. Лямбда-выражения

Лямбда-выражения представляют собой «встроенные методы», у которых нет имён, но которые могут иметь входные параметры и несколько инструкций. Они активно используются в LINQ для передачи параметров методам. Лямбда-выражения компилируются в делегаты или в деревья выражений в зависимости от условий, при которых они используются.

14. Деревья выражений

Деревья выражения позволяют представлять выражения в виде структур данных. Они активно используются поставщиками LINQ для преобразования выражений запросов в код, имеющий смысл в других контекстах, например в базах данных SQL.

Дополнительные сведения о деревья выражений можно получить в разделе Деревья выражений (C# и Visual Basic) (http://msdn.microsoft.com/ru-ru/library/bb397951.aspx).

3.5.3. Операторы, вычисление значения и приоритет операторов Операторы, вычисление значения и приоритет оператора

1. Понятие «Оператор»

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

Следующая строка кода C# содержит один унарный оператор и один операнд. Оператор инкремента ++ изменяет значение операнда y.

y++;

Следующая строка кода C# содержит два бинарных оператора, каждый с двумя операндами. Оператор присвоения = в качестве операндов принимает целочисленную переменную y и выражение 2 + 3. Выражение 2 + 3 само состоит из оператора сложения и два операнда, 2 и 3:

y = 2 + 3;

2. Операторы, вычисление значения и приоритет операторов

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

Каждый оператор имеет определенный приоритет. В выражении, которое содержит несколько операторов с разными уровнями приоритета, порядок применения операторов определяет порядок, в котором вычисляются операторы. Например, следующий оператор присваивает 3 полю n1:

n1 = 11 - 2 * 4;

Умножение выполняется в первую очередь, так как умножение имеет приоритет над вычитанием.

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

3. Основные операторы

Выражение

Описание

x.y

Доступ к членам

f(x)

Вызов метода и делегата

a[x]

Доступ к массиву и индексатору

x++

Постфиксное приращение

x--

Постфиксное уменьшение

new T(...)

Создание объекта и делегата

new T(...){...}

Создание объекта с инициализатором

new {...}

Анонимный инициализатор объекта

new T[...]

Создание массива

typeof(T)

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

checked(x)

Вычисление выражения в проверенном контексте

unchecked(x)

Вычисление выражения в непроверенном контексте

default (T)

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

delegate {}

Анонимная функция (анонимный метод)

4. Унарные операторы

Выражение

Описание

+x

Удостоверение

-x

Отрицание

!x

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

~x

Поразрядное отрицание

++x

Префиксное приращение

--x

Префиксное уменьшение

(T)x

Явное преобразование x в тип T

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

Выражение

Описание

*

Умножение

/

Деление

%

Остаток

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

Выражение

Описание

x + y

Сложение, объединение строк, объединение делегатов

x - y

Вычитание, удаление делегатов

7. Операторы сдвига

Выражение

Описание

x << y

Сдвиг влево

x >> y

Сдвиг вправо

8. Операторы отношения и типа

Выражение

Описание

x < y

Меньше

x > y

Больше

x <= y

Меньше или равно

x >= y

Больше или равно

x is T

Возвращает значение true, если x относится к типу T, в противном случае возвращает значение false

x as T

Возвращает x типа T или нулевое значение, если x не относится к типу T