Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






C# Делегаты, анонимные методы, лямбда выражения.



1. Анонимные методы.

      Анонимные методы появились еще в версии C# 2.0. Применяют их и сегодня. Хоть и на смену анонимным методам в версии С# 3.0 пришли лямбда выражения, все же со счетов их списывать не стоит. Само название говорит, что метод анонимный, то есть не имеет названия! Лямбда выражения будет легче понять после рассмотрения анонимных методов. Анонимный метод – один из способов создать безымянный блок, который будет связан с конкретным делегатом.

delegate void Anonim(); // сигнатура делегата

     Создадим анонимный метод, который выведет нам на консоль все директории указанного каталога на компьютере:

// используем анонимный метод 
Anonim anonim = delegate{
    DirectoryInfo dir = new DirectoryInfo("D:\\");
    foreach (DirectoryInfo d in dir.GetDirectories())
    Console.WriteLine(d.Name);                   
};
anonim(); // запускаем

     Видим, что блок безымянный. Просто конкретному делегату мы указали данный блок.

     А теперь рассмотрим пример использования анонимных методов с параметрами. Для этого определим делегат:

// сигнатура делегата
delegate void Anonim2(int start, int finish); 

// теперь аноним. метод с параметрами
Anonim2 anonim2 = delegate(int a, int b) {
    for (int i = a; i <= b; i++)
       	Console.Write("Бегун сейчас на {0} километре." +
             " До финиша осталось {1}\n", i, b-i);
};

anonim2(1, 10);

     После слова delegate, в скобках указываются параметры, вот и вся комедия. Можно использовать еще анонимные методы, которые возвращают значения. Для этого просто измените в сигнатуре делегата тип void на другой тип, к примеру – int, а в методе используйте слово return для возврата значения из метода.

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

     Лямбда выражения, это более лучшая замена анонимным методам, которая основываются на новом синтаксисе. Во всех лямбда выражениях должен быть лямбда оператор “=>”. Этот оператор разделяет выражение на две части.

  • В левой части – параметры (может быть несколько);
  • В правой части – тело метода;

     Есть еще такие понятия, как одиночные и блочные лямбда выражения. Все просто, если у нас после цикла for или оператора if включается одна строчка кода, то незачем включать эту строку в фигурные скобки. Это относится к одиночным лямбда выражениям, но если в выражение несколько строчек, нужно захватить этот блок в фигурные скобки.

     Я бы распределил использование лямбда выражения на три этапа:

  1. Определения делегата, совместимого с лямбда-выражением.
  2. Создание экземпляра делегата, которому присваивается лямбда-выражение.
  3. Этот этап, уже само использование выражение, которое происходит при обращение к делегату.

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

Этап 1:

delegate int Pow(int change);

Этап 2:

Pow pow = change => change * change;

Этап 3:

Console.WriteLine(pow(10)); // ризультат будет 100

Теперь перепишем пример про бегуна с использованием лямбда-выражения.

// сигнатура делегата
// совместимого с лямбда-выражением.
delegate int LambdaDelegate(int step);

LambdaDelegate lambdaDel = a => ++a;

int step = 1;
int finish = 10;

while (step <= finish)
{
Console.Write("Бегун сейчас на {0} километре." +
     " До финиша осталось {1}\n", step, finish - step);
       step = lambdaDel(step);
}

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

LambdaDelegate lambdaDel = (int a) => ++a;

     Обратите внимание на выражение “++a”. Об этом нюансе говорилось в курсе по C# первой части. Если переписать, к примеру, вот так: “a++” – будет бесконечный цикл!

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

     Чтоб создать блочное лямбда-выражение, нужно просто его взять в фигурные скобки. Преимущества в использование блочных выражений проявляется в том, что есть возможность управлять такими операторами как if, for и т.д. Все также как при написание простых методов.

Этап 1:

delegate int Pow(int change); 

Этап 2:

Pow lambdaDel = change =>
{
if (change != 0)
       	return change * change;
       return 0;
};

Этап 3:

Console.WriteLine(pow(10)); // ризультат будет 100



Больше информации читайте по теме:

Шаблон Factory Method
Методы расширения в C#
Использование делегатов в событиях на C# - Часть 2
Использование делегатов в событиях на C#
Автозапуск программы в C#
Обобщенные делегаты на C#
Регулярные выражения в c#
c# - сортировка List<T>
Пространства имен в c#
c# - Использование Shell (для получения списка файлов/папок)
Методы классов Math и Random в c#
Строковые массивы класса string в c#
c# - Символьные массивы
Массивы в C#
Операторы языка C#
Операции языка C# и особенности их использования
Шифрование на c# (хеш-код строки по алгоритму MD5)
Отписка от событий в c#
Примеры регулярных выражений на c# (класс RegularExpressions.Regex)
c# - итератор для списка Dictionary (foreach для словаря)
Перемешивание списков (массивов) любых типов на c# - противоположность сортировки
c# - CultureInfo (IFormatProvider) и конвертация, приведение числовых типов
Работа в c# с DateTime - получение набора дат в текущем году
GZip - архивация (упаковка) файлов на c#
DateTime - пример определения даты и времени
Время выполнения операций c#
Паттерн (шаблон) SingleTon средствами c#
Обобщенная коллекция Dictionary
c# структуры - не классы?! А что же это - struct VS class
Создание пользовательских событий на c#
Выборка файлов из директории и поддиректорий на c#
Делегаты и методы на c#
Запуск одного экземпляра приложения на c#
c# - Битовый флаг enum



Оценить статью:

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

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        S_V    30.03.2011 2:03:34
        

А как же Func<>

85.77.236.19


        Максим    30.03.2011 18:59:10
        

Если можно, то поконкретнее... А как же Func<> - просто не совсем понимаю в чем вопрос!

194.44.123.249


        Максим    08.04.2011 11:39:25
        

Если я правильно понял по поводу Func<>, то об этом при написание статей по LINQ пойдет речь.

194.44.123.249


        Dim    23.08.2011 10:10:05
        

The very best!

62.231.21.21




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок