Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Доступ к "внешним" переменным
Доступ к "внешним" переменным
Анонимные методы интересны в том отношении, что они позволяют доступ к локальным переменным определяющего их метода. Формально говоря, такие переменные являются "внешними переменными" анонимного метода. Для примера предположим, что наш метод Main() определяет локальную целую переменную-счетчик с именем aboutToBlowCounter. В рамках анонимных методов, обрабатывающих событие AboutToBlow, мы будем увеличивать этот счетчик на 1 и печатать его значение в конце Main().
static void Main(string[] args) {
…
int aboutToBlowCounter = 0;
// Создание машины.
Car c1 = new Car("SlugBug", 100, 10);
// Регистрация обработчиков событий в виде анонимных методов.
c1.AboutToBlow += delegate {
aboutToBlowCounter++;
Console.WriteLine("Ox! Едем слишком быстро!");
};
c1.AboutToBlow += delegate(string msg) {
aboutToBlowCounter++;
Console.WriteLine("Важное сообщение от Car: {0}", msg);
};
…
Console.WriteLine("Событие AboutToBlow вызывалось {0} раз(а).", aboutToBlowCounter);
Console.ReadLine();
}
В результате выполнения этого обновленного метода Main() завершающий оператор Console.WriteLine() сообщит вам о том, что событие AboutToBlow генерировалось дважды.
Замечание. Анонимный метод не имеет возможности получить доступ к параметрам ref и out определяющего метода.
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Основные "рычаги" управления производительностью
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Безопасная работа с внешними таблицами
- 9.4. Права доступа к squid
- Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
- Глава 29 Доступ к канальному уровню
- 10.5. Транзакции и пути доступа меню
- Настройка доступа пользователей к рабочей книге
- Работа с переменными
- 3.5 Проблемы доступа при использовании нескольких протоколов
- Доступ к существующим рабочим областям для документов