Явная отмена регистрации обработчиков событий необходима только тогда, когда ссылка на событие поддерживает объект, который содержит цель делегата, слишком долго. В вашем случае sampleObj будет иметь ссылку на объект Form. Синтаксис C # сахар скрывает это, компилятор фактически генерирует этот код:
sampleObj.AssignValue = new
Sample.AssignValueDelegate ( это ,
AssignValue);
Если аргумент this инициализирует свойство Delegate.Target, а аргумент AssignValue инициализирует свойство Delegate.Method.
Это означает, что до тех пор, пока объект sampleObj остается на ссылке, на объект формы тоже остаются ссылки, и он не будет собирать мусор. Однако в вашем случае единственный объект, который имеет ссылку на sampleObj, - это сам объект формы. Сборщик мусора не имеет проблем с циклическими ссылками, подобными этим, и обнаружит, что нет никаких других ссылок ни на один объект. И соберу их обоих одновременно.
Существует одно (необычное) исключение: у вас возникнут проблемы с классом sampleObj, генерирующим события после , когда форма закрыта. Что может произойти, если событие вызвано чем-то за пределами формы, например, некоторым аппаратным событием. Это событие все еще может запустить код в классе формы. Обычно вы замечаете это быстро, любая попытка ссылки на элемент управления в форме вызовет исключение ObjectDisposed.