2013-12-18 2 views
3

У меня есть вопрос о перенаправленных событиях, я вижу, в какой-то документации, что, когда мы определяем наши собственные события, мы добавлять и удалять обработчики к нему, используя следующий код:Routed синтаксис события

public event RoutedEventHandler CustomClick 
{ 
    add { AddHandler(CustomClickEvent, value); } 

    remove { RemoveHandler(CustomClickEvent, value); } 
} 

Но мою точку заключается в том, что это не похоже на синтаксис конструктора, а также синтаксис инициализации свойства! также это не синтаксис get/set свойства (хотя он похож на этот). Я прочитал подробную документацию на C#, но я не вижу, что это за конструкция. Только в документации о пользовательских RoutedEvents, я вижу этот код, но в обычном учебнике/учебнике C# я никогда не вижу, что это законная языковая конструкция. Может ли кто-нибудь объяснить мне это? или указать мне хорошую документацию, объясняющую это?

Заранее спасибо.

+0

[Вот страница MSDN] (http://msdn.microsoft.com/en-us/library/bb882534.aspx) для вещи вы просите о. –

ответ

0

Это синтаксис, зарезервированный для events in C#, см. Также here. Цитируется:

Добавить контекстное ключевое слово используется для определения персонализатора специальных событий, который вызывается, когда клиентский код подписывается на ваше событие. Если вы поставляете пользовательский add accessor, вы также должны предоставить удаленный доступ.

+0

Итак, это означает, что ключевое слово «добавить» такое же, как оператор «+ =» для подписки метода на событие? и аналогичным образом «remove» соответствует оператору «- =» (отменить подписку) ... правильно? – user2755525

+0

'add' указывает, что делать * делать, когда кто-то использует' + = '. Кстати, он доступен по крайней мере с VS2008. [** Этот ответ **] (http://stackoverflow.com/questions/3028724/why-do-we-need-the-event-keyword-while-defining-events) обсуждает события более подробно. – sinelaw

2

Это «аксессоры событий». Это эквивалент синтаксиса свойства. Они позволяют вам выставлять событие и изменять способ его работы. Не нарушая договора инкапсулирующих классов (например, свойства).

Смотрите здесь для объяснения: http://msdn.microsoft.com/en-us/library/bb882534.aspx

+0

Спасибо вам за помощь. Я видел ссылку. Это только новое для VS2013? или он был доступен в более старых версиях (C# 4 или C# 3)? – user2755525

+0

Доступно с .NET 2.0. –

Смежные вопросы