Этот вопрос может привести к умозрительным ответам, но я предполагаю, что там было хорошо продуманное дизайнерское решение за реализацию event
в С#.
Шаблон события в С# поддерживает оживление подписчика пока издатель события жив. Таким образом, если вы не откажетесь от подписки, вы пропустите память (ну, на самом деле, не утечка), но память остается занятой без необходимости).
Если я хочу предотвратить это, я могу отказаться от подписки на события или реализовать слабый шаблон событий в предложенный в MSDN.
С шаблоном события, вызывающим так много проблем (для новичков?), возникает вопрос: почему было принято решение, что издатель сохраняет сильную ссылку на подписчика, вместо того, чтобы сделать их независимыми или позволить разработчикам явно иметь strong
или weak
?
Здесь уже есть пара questions, и ответы звучат разумно, но никто не отвечает, почему это так.