Если вы загляните внутрь класса Stack<T>
из .NET 4.0, вы заметите, что есть частное статическое поле emptyArray, которое используется внутри конструкторов для инициализации реального частного поля массива.
private T[] array;
private static T[] emptyArray;
private int size;
private int version;
static Stack()
{
Stack<T>.emptyArray = new T[0];
}
public Stack()
{
array = Stack<T>.emptyArray;
size = 0;
version = 0;
}
Почему бы просто не поставить this.array = new T[0];
?А также, почему имеются размещенные штрихи инициализации для полей размера и версии, если вы пропустите эти строки, они все равно будут инициализированы значениями по умолчанию (0).