Event — это value или reference type в C#?

Event - это value или reference type в C#? Обоснуйте пожалуйста ответ.
  • Вопрос задан
  • 433 просмотра
Решения вопроса 1
DmitryITWorksMakarov
@DmitryITWorksMakarov
event так относится к экземпляру делегата ( Станислав Макаров : мультикаст ), как property относится к значению поля.

event - это синтаксический сахар, обертка для методов add и remove, как property является оберткой к методам get и set.

Таким образом, вопрос некорректен, поскольку event не тип.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
1) Ивент - это тот же делегат, только с урезанным интерфейсом для внешних обращений (за пределами класса). В public интерфейс класса от ивента попадают только операции добавления и удаления хэндлера. Вы можете инвокнуть делегат, представляющий ивент, изнутри класса, но не сможете это сделать снаружи класса (т.е., например так: button1.Clicked(new EventArgs(...)) );
2) Раз мы выяснили, что ивент это делегат (мультикаст, причем), то идем и убеждаемся в том, что делегат это reference-тип: https://msdn.microsoft.com/en-us/library/system.mu...

Экзамен на носу? Успешной сдачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы