предупреждение CS0649: поле <fieldname>никогда не назначается и всегда будет иметь значение по умолчанию, равное нулю - PullRequest
0 голосов
/ 22 декабря 2011

При объявлении события, такого как

 public EventHandler<EventArgs> test;

, я получаю предупреждение компилятора заголовка.

с выделением события "test" непосредственно над ним, объявляется точно такой же синтаксис и работает втот же класс.

по сути, он не позволит мне объявить другое событие, EventArgs или любой другой тип в этом классе.Если я закомментирую объявление и оператор Повышение, компилируется и выполняется без проблем.

И если я игнорирую предупреждение и запускаю, при попытке вызвать событие, такое как

test(this,EventArgs.Empty);

getисключение нулевой ссылки, что дает, я не понимаю, как событие когда-либо получает назначенный в первую очередь?

1 Ответ

2 голосов
/ 22 декабря 2011

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

Синтаксис этого события:

public event EventHandler<EventArgs> test;

Даже при том, что событие будет нулевым, если никто никогда не зарегистрирует обработчик события, поэтому вам придется проверить, что test не является нулевым, прежде чем пытаться вызвать его.

Будет ненулевым, если к событию прикреплен какой-либо другой класс:

instanceOfMyClass.text += AnEventHandlerMethod;

Посмотрите учебник по событиям на Msdn.

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