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

Ниже приведен простой пример одиночного лямбда-выражения.

count- => count + 2

В этом выражении count служит параметром, на который воздействует выражение count + 2. В итоге значение параметра count увеличивается на 2. А вот еще один пример одиночного лямбда-выражения.

n => п % 2 == О

В данн“ом случае выражение возвращает логическое значение true, если числовое значение параметра п оказывается четным, а иначе — логическое значение false.

Лямбда-выражение применяется в два этапа. Сначала объявляется тип делегата, совместимый с лямбда-выражением, а затем экземпляр делегата, которому присваивается лямбда-выражение. После этого лямбда-выражение вычисляется при обращении к экземпляру делегата. Результатом его вычисления становится возвращаемое значение.

В приведенном ниже примере программы демонстрируется применение двух одиночных лямбда-выражений. Сначала в этой программе объявляются два типа делегатов. Первый из них, Inc г, принимает аргумент типа int и возвращает результат того же типа. Второй делегат, IsEven, также принимает аргумент типа int, но возвращает результат типа bool. Затем экземплярам этих делегатов присваиваются одиночные лямбда-выражения. И наконец, лямбда-выражения вычисляются с помощью соответствующих экземпляров делегатов.

// Применить два одиночных лямбда-выражения.

11Объявить делегат, принимающий аргумент типа int и // возвращающий результат типа int.    '

delegate int Incr(int v);

// Объявить делегат, принимающий аргумент типа int и // возвращающий результат типа bool, delegate bool IsEven(int v);

class SimpleLambdaDemo {

static void Main() {

// Создать делегат Incr, ссылающийся на лямбда-выражение,

// увеличивающее свой параметр на 2.

Incr incr = count => count + 2;

// А теперь использовать лямбда-выражение incr.

Console.WriteLine("Использование лямбда-выражения incr: "); int x = -10; while(x <= 0)    {

Console.Write(x + " ");

x = incr(x); // увеличить значение x на 2

}

Console.WriteLine ("\n");

// Создать экземпляр делегата IsEven, ссылающийся на лямбда-выражение,

// возвращающее логическое значение true, если его параметр имеет четное // значение, а иначе — логическое значение false.

IsEven isEven = n => n % 2 == 0;

// А теперь использовать лямбда-выражение isEven.

Console.WriteLine("Использование лямбда-выражения isEven: "); for (int i=l; i <= 10; i++)

Перейти на страницу:

Похожие книги