title: Why is the implementation of events in C# not using a weak event pattern by default?
body: <p>This question may lead to speculative answers but I presume there's a well thought design decision behind the implementation of <code>event</code> in <a href="/questions/tagged/c%23" class="post-tag" title="show questions tagged &#39;c#&#39;" rel="tag">c#</a>.</p>
  
  <p>The event pattern in <a href="/questions/tagged/c%23" class="post-tag" title="show questions tagged &#39;c#&#39;" rel="tag">c#</a> keeps the subscriber alive as long as the publisher of the event is alive. Thus, if you don't unsubscribe, you're leaking memory (well, not really leaking - but memory remains occupied unnecessarily).</p>
  
  <p>If I want to prevent this, I can unsubscribe from events or implement a weak event pattern as <a href="https://msdn.microsoft.com/en-us/library/aa970850.aspx" rel="noreferrer">proposed at MSDN</a>.</p>
  
  <p>With the event pattern causing so many problems (for beginners?), the question is: why was the decision made that the publisher keeps a strong reference to the subscriber, instead of making them independent or allowing developers to explicitly have a <code>strong</code> or <code>weak</code> modifier?</p>
  
  <p>There are already a couple of <a href="https://stackoverflow.com/questions/516617/what-is-the-weak-event-pattern-used-in-wpf-applications">questions</a> here about this topic and the answers sound reasonable, but none really answers why it is like it is.</p>