Как я могу исправить эту ошибку: «MyEvent + = Ожидается»? - PullRequest
1 голос
/ 16 ноября 2008

У меня есть делегат, скажите:

public delegate void MyDelegate();

У меня есть событие, скажем:

public MyDelegate MyEvent;

При вызове события я получаю сообщение об ошибке:

"MyEvent + = ожидается ....."

Как мне решить эту проблему?

Ответы [ 5 ]

4 голосов
/ 16 ноября 2008

+ = связано с событиями, а не просто с объявлением делегата. Вам не хватает ключевого слова 'event'.

public **event** MyDelegate MyEvent;

Если у вас есть это ключевое слово, + = будет работать для вас.

4 голосов
/ 16 ноября 2008

Вы можете вызвать событие только из класса, в котором вы его объявили. В любом другом месте вы можете добавлять или удалять обработчики из делегата события только через операторы += и -=, отсюда и сообщение об ошибке.

1 голос
/ 16 ноября 2008

Если вы пытаетесь использовать событие из другого класса, вам необходимо понять разницу между событиями и делегатами. Событие просто заключает в себе аспекты «подписаться» и «отписаться», а не «инициировать событие». (На самом деле в IL у вас может есть член для "поднять событие", но C # его не поддерживает.)

См. мою статью о событиях и делегатах для более подробной информации.

0 голосов
/ 17 ноября 2008

Ознакомьтесь с Крисом Селлсом .NET Delegates: Сказка на ночь на C # для отличного руководства для делегатов и мероприятий. Познавательно и довольно занимательно.

0 голосов
/ 16 ноября 2008

Также вы можете захотеть взглянуть на этот пост о избегая проверки на нулевые делегаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...