Если вы заглянете внутрь класса 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).