title: C# subscribe a function to System.Action that is subscribed to another System.Action: why does order matter?
body: <p>I have 3 classes, forming a tree. I'm using System.Actions to communicate events. But I'm confused why the order I subscribe matters. Check this pseudo code:</p>
  
  <pre><code>class Leaf
  {
      public System.Action OnTrigger;
      public void Go()
      {
          if (OnTrigger != null)
              OnTrigger();
      }
  }
  
  class Chunk
  {
      public System.Action OnTrigger;
      public Leaf leaf = null;
      public Chunk()
      {
          leaf = new Leaf();
      }
  }
  
  class Tree
  {
      void Hello()
      {
          Debug.Log("Hello");
      }
      void World()
      {
          Debug.Log("World");
      }
  
      public Tree()
      {
          var chunk2 = new Chunk();
          chunk2.OnTrigger += Hello; // OK: will be called
          chunk2.leaf.OnTrigger += chunk2.OnTrigger;
          chunk2.OnTrigger += World; // NOT: not be called
          chunk2.leaf.Go();
      }
  }
  </code></pre>
  
  <p>best regards,</p>
  
  <p>Massa</p>