Delegate combining in C#
<p>Say I have a delegate field in a class in C#:</p>

<pre><code>public Action TrainsAreComing;
</code></pre>

<p>to which I then do, in some instance method:</p>

<pre><code>TrainsAreComing = FirstSubscriber;
</code></pre>

<p>and then:</p>

<pre><code>TrainsAreComing += SecondSubscriber
</code></pre>

<p>I've read some SO answers where people say this statement translates to:</p>

<pre><code> TrainsAreComing += (Action)Delegate.Combine(TrainsAreComing, new Action(SecondSubscriber));
</code></pre>

<p>Which I found not to be true, because here you're actually combining FirstSubscriber + FirstSubscriber + SecondSubscriber which is not what <code>TrainsAreComing += SecondMethod</code> does (just combining FirstSubscriber with SecondSubscriber).</p>

<p>So what's really going on in the background and how would you write the de-sugared version of <code>TrainsAreComing += SecondMethod</code> using <code>Delegate.Combine</code>?</p>