Присвоение значения событиям - PullRequest
0 голосов
/ 08 мая 2020

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

Первый:

private event Action<int> ActivityChanged = delegate {};

Было ли этому событию присвоено значение с инициализаторами переменных , насколько я понимаю, только + = и - = операторы были допущены на мероприятия? Что здесь делает анонимный метод?

Второй:

event Action<int> IActivityFacade.ActivityChanged
{
    add
    {
        ActivityChanged += value;
        value(GetSelectedActivity()); 
    }
    remove { ActivityChanged -= value; }
}

Была ли первая строка прямым объявлением, а вторая - определением? Я вырос в C ++ / C, и это то, что мне показалось, но, насколько я знаю, это могло означать совсем другое. Допускаются ли форвардные объявления в C#

1 Ответ

1 голос
/ 08 мая 2020
  • первая строка - это частный член и фактическое «событие» с фиктивным инициализатором. событие имеет операторы + = и - = для подписки и отказа от подписки, без фиктивного значения оно выдает нулевую ссылку
  • секунда является общедоступным средством доступа для подписчиков с одинаковыми + = и - =

с событие-член, вы можете запустить их, как показано ниже. ActivityChanged () некоторый пример

IActivityFacade.ActivityChanged этот средний класс реализует интерфейс, и мы явно определяем его как средство доступа к событиям о интерфейсных событиях и явный ввод

...