Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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 определяющего метода.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.474. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз