答案 0 :(得分:6)
如果你查看当前的源代码,它也会说10。
答案 1 :(得分:5)
System.Collection.Stack
的默认容量为10。
System.Collection.Generic.Stack<T>
的默认容量为0。
您可以在源代码中自行查看:
以上所有内容都是关于当前的.NET实现,将来可能会有所改变。
答案 2 :(得分:2)
在C#中,Stack<T>
开始时容量为0(它保存一个空数组),然后当你添加一个项目时,容量将为4.之后,如果你的数组已满,那么添加一个项目,它的大小将加倍。
您可以在来源中看到自己:Stack
你提到10.我认为在Java中,集合的容量从10开始。
答案 3 :(得分:1)
您可以使用反射来查看它:
var stack = new Stack();
var fieldInfo = typeof(Stack).GetField("_array", BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine((fieldInfo.GetValue(stack) as object[]).Length); // 10
var genericStack = new Stack<int>();
var genericFieldInfo = typeof(Stack<int>).GetField("_array", BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine((genericFieldInfo.GetValue(genericStack) as int[]).Length); // 0