// Применить два одиночных лямбда-выражения.
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++)
if(isEven (i)) Console.WriteLine(i + " четное.");
}
}
Вот к какому результату приводит выполнение этой программы.
Использование лямбда-выражения incr:
-10 -8 -6 -4 -2 0
Использование лямбда-выражения isEven:
2 четное.
4 четное.
6 четное.
8 четное.
10 четьюе.
Обратите в данной программе особое внимание на следующие строки объявлений.
Incr incr = count => count +2;
IsEven isEven = n => n % 2 == 0;
В первой строке объявления экземпляру делегата incr присваивается одиночное лямбда-выражение, возвращающее результат увеличения на 2 значения параметраcount.Это выражение может быть присвоено делегатуIncr,поскольку оно совместимо с объявлением данного делегата. Аргумент, указываемый при обращении к экземпляру делегатаincr,передается параметруcount,который и возвращает результат вычисления лямбда-выражения. Во второй строке объявления делегатуisEvenприсваивается выражение, возвращающее логическое значениеtrue,если передаваемый ему аргумент оказывается четным, а иначе — логическое значениеfalse.Следовательно, это лямбда-выражение совместимо с объявлением делегатаIsEven.