Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ермаков / 17. Приложение 1.docx
Скачиваний:
274
Добавлен:
19.04.2015
Размер:
4.69 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 {}

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