Stack对象的默认容量是多少?

时间:2015-02-03 15:45:55

标签: c# .net

Stack对象的默认容量是多少? 我听说它是​​10,但我在MSDN上找不到它。见google book.

此外,我正在通过软件进行认证测试。它有相同的结果。看图像。

test

但我发现了一些interesting answers which are different.

4 个答案:

答案 0 :(得分:6)

答案 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