.NET 4.0のクラスの内部を見るStack<T>
と、コンストラクター内で実際の「配列」プライベートフィールドを初期化するために使用される「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)に初期化されます。