Stack 对象的默认容量是多少?
What is the default capacity of Stack object?
Stack
对象的默认容量是多少?
听说是10,但是在MSDN上找不到。看到这个 google book.
我也在练习一个软件的认证测试。它具有相同的结果。看图。
但是我发现了一些interesting answers which are different.
如果您查看当前的源代码,它也显示 10。
System.Collection.Stack
的默认容量为 10。
System.Collection.Generic.Stack<T>
的默认容量为 0。
直接在源码里自己看吧:
以上所有内容都是关于当前的 .NET 实现,将来可能会更改。
在 C# 中,一个 Stack<T>
开始时容量为 0(它包含一个空数组),然后当您添加一个项目时,容量将为 4。之后,如果数组已满当您添加一个项目时,它的大小会增加一倍。
你可以在源码里自己看:Stack
你提到了 10 个。我认为在 Java 中,集合的容量从 10 个开始。
可以用反射来看:
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
Stack
对象的默认容量是多少?
听说是10,但是在MSDN上找不到。看到这个 google book.
我也在练习一个软件的认证测试。它具有相同的结果。看图。
但是我发现了一些interesting answers which are different.
如果您查看当前的源代码,它也显示 10。
System.Collection.Stack
的默认容量为 10。
System.Collection.Generic.Stack<T>
的默认容量为 0。
直接在源码里自己看吧:
以上所有内容都是关于当前的 .NET 实现,将来可能会更改。
在 C# 中,一个 Stack<T>
开始时容量为 0(它包含一个空数组),然后当您添加一个项目时,容量将为 4。之后,如果数组已满当您添加一个项目时,它的大小会增加一倍。
你可以在源码里自己看:Stack
你提到了 10 个。我认为在 Java 中,集合的容量从 10 个开始。
可以用反射来看:
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