I am trying to learn how delegates work so I watched over the hierarchy and I found that invocation list of a System.Delegate is actually an array. If all the methods are invoked with the FIFO principle why not store the Delegates in Stack?
In other words why signature of the method
public virtual Stack<Delegate> GetInvocationList()
public virtual Delegate GetInvocationList()
Stack<T>because this collection was introduced in .NET 2.0 (earlier versions had no generic collections or generics at all, they were introduced in .NET 2.0/CLR 2.0).
Based on both points, I suspect that it was never changed from
Array to another data structure because of it would mean that .NET 1.x code would be broken so they decided to maintain backwards compatibility.