Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Реверсирование строки.

Реверсирование строки.

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

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

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

В методе Main() создаются четыре экземпляра делегата. Первый, strOp, имеет null-значение. Три других ссылаются на методы модификации строк. Затем организуется делегат для многоадресатной передачи, который вызывает методы removeSpaces()и reverse(). Это достигается благодаря следующим строкам программы:

strOp= repiaceSp;

strOp += reverseStr;

Сначала делегату strOp присваивается ссылка replaceSp. Затем, с помощью оператора "+=", в цепочку вызовов добавляется ссылка reverseStr. При вызове делегата strOp в этом случае вызываются оба метода, заменяя пробелы дефисами и реверсируястроку.

Затем при выполнении строки программы

strOp -== replaceSp;

из цепочки вызовов удаляется ссылка replaceSp, а с помощью строки strOp += removeSp; в цепочку вызовов добавляется ссылка removeSp.

Затем делегат StrOp вызывается снова. На этот раз из исходной строки удаляютсяпробелы, после чего она реверсируется.

Цепочки вызовов, организованные с помощью делегата, — мощный механизм, который позволяет определять набор методов, выполняемых "единым блоком". Цепочки делегатов имеют особое значение для событий.

 

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

Делегаты используются по двум основным причинам.

Во-первых, делегаты обеспечивают поддержку функционирования событий.

Во-вторых, делегаты позволяют во время выполнения программы выполнить метод, который точно не известен в период компиляции. Эта возможность особенно полезна, когда нужно создать оболочку, к которой могли бы подключаться программныекомпоненты. Например, представьте графическую программу (наподобие стандартнойутилиты Windows Paint). Используя делегат, можно было бы разрешить пользователюподключать специальные цветные светофильтры или анализаторы изображений. Более того, пользователь мог бы создавать "свои" последовательности этих фильтровили анализаторов.

8.3 События

На основе делегатов построено еще одно важное средство С#: событие (event). Событие — это по сути автоматическое уведомление о выполнении некоторого действия. События работают следующим образом. Объект, которому необходима информация онекотором событии, регистрирует обработчик для этого события. Когда ожидаемоесобытие происходит, вызываются все зарегистрированные обработчики. А теперьвнимание: обработчики событий представляются делегатами.

События — это члены класса, которые объявляются с использованием ключевогослова event. Наиболее распространенная форма объявления события имеет следующий вид:

event событийный_делегат объект;

Здесь элемент событийный_делегат означает имя делегата, используемого дляподдержки объявляемого события, а элемент объект — это имя создаваемого событийного объекта.

using System;

// Объявляем делегат для события,

delegate void MyEventHandler();

// Объявляем класс события,

class MyEvent {

public event MyEventHandler SomeEvent;

// Этот метод вызывается для генерирования события,

public void OnSomeEvent() {

if(SomeEvent!= null)

SomeEvent();

}}

class EventDemo {

// Обработчик события,

static void handler() {

Console.WriteLine("Произошло событие.");

}

public static void Main() {

MyEvent evt = new MyEvent();

// Добавляем метод handler() в список события,

evt.SomeEvent += new MyEventHandler(handler);

// Генерируем событие,

evt.OnSomeEvent();

}}

При выполнении программа отображает следующие результаты:




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 322; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.