Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Блочные лямбда-выражения





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

using System;

// Делегат IntOp принимает один аргумент типа int

// и возвращает результат типа int.

delegate int IntOp(int end);

class StatementLambdaDemo

{

static void Main()

{

// Блочное лямбда-выражение возвращает факториал

// передаваемого ему значения.

IntOp fact = n =>

{

int r = 1;

for (int i = 1; i <= n; i++)

r = i * r;

return r;

};

Console.WriteLine("Факториал 3 равен " + fact(3));

Console.WriteLine("Факториал 5 равен " + fact(5));

}

}

Факториал 3 равен 6

Факториал 5 равен 120

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

// Первый пример применения делегатов, переделанный с

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

using System;

//обьявить тип делегата

delegate string StrMod(string s);

class UseStatementLambdas

{

static void Main()

{

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

// выполняющие различные операции с символьными строками.

// Заменить пробелы дефисами.

StrMod ReplaceSpaces = s =>

{

Console.WriteLine("Замена пробелов дефисами.");

return s.Replace(' ', '_');

};

//Удалить пробелы.

StrMod RemoveSpaces = s =>

{

string temp = "";

int i;

Console.WriteLine("Удаление пробелов.");

for (i = 0; i < s.Length; i++)

if (s[i]!= ' ') temp += s[i]; return temp;

};

// Обратить строку.

StrMod Reverse = s =>

{

string temp = "";

int i, j;

Console.WriteLine("Обращение строки.");

for (j = 0, i = s.Length - 1; i >= 0; i--, j++)

temp += s[i];

return temp;

};

string str;

// Обратиться к лямбда-выражениям с помощью делегатов.

StrMod strOp = ReplaceSpaces;

str = strOp("Это простой тест.");

Console.WriteLine("Результирующая строка: " + str);

Console.WriteLine();

strOp = RemoveSpaces;

str = strOp("Это простой тест.");

Console.WriteLine("Результирующая строка: " + str);

Console.WriteLine();

strOp = Reverse;

str = strOp("Это простой тест.");

Console.WriteLine("Результирующая строка: " + str);

}

}

Замена пробелов дефисами.

Результирующая строка: Это-простой-тест.

 

Удаление пробелов.

Результирующая строка: Этопростойтест.

 

Обращение строки.

Результирующая строка:.тсет йотсорп отЭ







Date: 2015-09-02; view: 424; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию