События, делегаты, собеседования
Наткнулся на статью http://habrahabr.ru/blogs/net/65697/ в которой приводили пример вопроса на собеседовании:
public class A
{
public void OnDoWork()
{
if (DoWork != null)
DoWork(this, EventArgs.Empty);
}
public event EventHandler DoWork;
}
1. Что будет с программой, если класс A видоизменить так: убрать ключевое слово event?
2. Что будет с программой, если вообще во всем коде убрать ключевые слова event?
…
Поэтому ответы на вопросы будут такие:
1. Ничего не изменится
2. Ничего не изменится, если только в программе нет объявленных в интерфейсах событий.
На мой взгляд, сегодня подобное характерно на собеседованиях. Задающие вопросы люди САМИ не знают правильного ответа. Более того, и пример приводят абсолютно бессмысленный, с публичным обработчиком этого самого события. И даже потом пишут статьи на популярном ресурсе, декларируя такие замечательные ответы.
Пусть попробуют на досуге:
var test = new A();
test.DoWork = null;
UPD: В комментариях нашлись-таки люди, которые привели правильный ответ. Надеюсь до этого комментария хоть кто-нибудь дочитает :)