Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по событиям в C# / 15 сообщений из 15, страница 1 из 1
11.01.2013, 18:51
    #38106943
Dangreon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
Из книжки Албахари:
" При объявлени показанного ниже события происходитя три действия:
Код: c#
1.
2.
3.
4.
public class Broadcaster
{
     public event PrideChangeedHandler PriceChanged;
}



Во-первых, компилятор транслирует объявление события примерно следующим образом:

Код: c#
1.
2.
3.
4.
5.
6.
PriceChangedHandler _priceChanged; //закрытый делегат
public event PriceChangedHandler PriceChanged
{
  add       { _priceChanged += value; }
  remove  { _priceChanged -= value; }
}



Во-вторых, компилятор ищет внутри класса Broadcaster ссылки на PriceChanged, в
которых выполняются операции, отличные от += или -=, и переадресует их на лежащее в основе поле делегата
_priceChanged.

В третьих, ...

Вопрос! что за ссылки на PriceChanged в которых выполняются операции, отличные от += или -+ ???
что за операции?
В чем смысл этого , второго утверждения?
...
Рейтинг: 0 / 0
11.01.2013, 19:48
    #38106992
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
Dangreon, видимо имеются ввиду записи типа:
Код: c#
1.
2.
3.
4.
if (PriceChanged != null)
{
    PriceChanged(this, EventArgs.Empty);
}
...
Рейтинг: 0 / 0
14.01.2013, 11:37
    #38108936
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
немного не в тему,но все же. Задумался - что из себя представляют события event? Если с делегатами все ясно, то про них как-то умалчивается. Это внутренний механизм NET или Windows?
...
Рейтинг: 0 / 0
14.01.2013, 12:17
    #38108992
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
netivanнемного не в тему,но все же. Задумался - что из себя представляют события event? Если с делегатами все ясно, то про них как-то умалчивается. Это внутренний механизм NET или Windows?Где умалчивают? В первом посте темы показано, что из себя представляют события
События (Руководство по программированию в C#)
...
Рейтинг: 0 / 0
14.01.2013, 12:20
    #38109000
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
skyANA,

ну 1 пост не раскрывает вопрос. Или я чего-то не понимаю.
...
Рейтинг: 0 / 0
14.01.2013, 12:25
    #38109011
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
netivan, а как Вы понимаете следующий код?
Код: c#
1.
2.
3.
4.
5.
6.
7.
PriceChangedHandler _priceChanged; // закрытый делегат

public event PriceChangedHandler PriceChanged
{
  add { _priceChanged += value; }
  remove { _priceChanged -= value; }
}
...
Рейтинг: 0 / 0
14.01.2013, 12:30
    #38109018
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
skyANA,

добавляется/убирается вызов метода в цепочке вызовов делегаете. Как устроен делегат представляю. - по сути это класс и тд. А вот что именно из себя event представляет? Только лишь синтаксис?
...
Рейтинг: 0 / 0
14.01.2013, 12:33
    #38109028
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
netivan, да это просто кусок сахара...
...
Рейтинг: 0 / 0
14.01.2013, 12:34
    #38109029
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
event (Справочник по C#)События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя). Если на событие подписаны другие классы или структуры, их методы обработчиков событий будут вызваны когда класс издателя инициирует событие.
...
Рейтинг: 0 / 0
14.01.2013, 12:35
    #38109031
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
netivanskyANA,

добавляется/убирается вызов метода в цепочке вызовов делегаете. Как устроен делегат представляю. - по сути это класс и тд. А вот что именно из себя event представляет? Только лишь синтаксис?
по сути вещей делегат это указатель на функцию, строго зажатый в синтаксис языка.
события - список указателей на функцию, которые надо вызвать.
т.е. события можно реализовать руками, без механизма event ))
...
Рейтинг: 0 / 0
14.01.2013, 12:38
    #38109037
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
beg-in-erбез механизма eventБез использования ключевого слова event?
...
Рейтинг: 0 / 0
14.01.2013, 12:45
    #38109049
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
busernetivan, да это просто кусок сахара...+ ограничение доступа к сахару.
...
Рейтинг: 0 / 0
14.01.2013, 12:47
    #38109056
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
skyANAbeg-in-erбез механизма eventБез использования ключевого слова event?
По сути event и то во что он разворачивается (вплоть до multicastdelegate) реализует паттерн observer, со всеми вытекающими... ну да - все т.с. реализуется и без использования слова event...
...
Рейтинг: 0 / 0
14.01.2013, 12:59
    #38109079
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
buser,

Ивент можно поднять только из класса в котором он создан.
...
Рейтинг: 0 / 0
14.01.2013, 14:29
    #38109249
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по событиям в C#
вот приблизительно становится понятно. Надо самому реализовать "событие" как-нибудь. Жаль конечно, что "события" event и всякие "сигналы" waithandle часто в литературе тоже называются "событиями". Но это конечно не в тему.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по событиям в C# / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]