CSDN-CSDN社区-.NET技术-.NET Framework

收藏 关于ArrsyList [问题点数:20,结帖人:h_violin]

  • h_violin
  • (樱花摇曳)
  • 等 级:
  • 结帖率:
楼主发表于:2008-06-10 20:27:35
            #region ArrayList Count&Capacity
            ArrayList alist = new ArrayList();
            alist.Add("a");
            alist.Add("b");
            alist.Add("c");
            alist.Add("d");
            alist.Add("e");
            Console.WriteLine(alist.Count);
            Console.WriteLine(alist.Capacity);这个地方为什么是8,书上说默认分配16的??
            //将Capacity设置为集合中的实际个数Count
            alist.TrimToSize();
            Console.WriteLine(alist.Count);
            Console.WriteLine(alist.Capacity);
            //count变,Capacity不变
            alist.Clear();
            Console.WriteLine(alist.Count);
            Console.WriteLine(alist.Capacity);
            //
            alist.TrimToSize();
            Console.WriteLine(alist.Count);
            Console.WriteLine(alist.Capacity);//这个地方为什么不是0,而是count-1??
            #endregion
谢谢各位大哥了
回复次数:5
#1楼 得分:0回复于:2008-06-10 21:03:59
容量和元素个数问题,默认是8好像,以后每次超过就翻一翻(2倍)
#2楼 得分:0回复于:2008-06-16 18:10:27
要问为什么.只有微软知道..
  • Janyue用户头像
  • Janyue
  • (你敲我的门,叫我如何隐身...)
  • 等 级:
#3楼 得分:0回复于:2008-06-16 18:45:38
Capacity是ArrayList可以存储的元素数。Count是ArrayList中实际包含的元素数。Capacity总是大于或等于Count。如果在添加元素时,Count超过Capacity,则该列表的容量会通过自动重新分配内部数组加倍。
如果Capacity的值显式设置,则内部数组也需要重新分配以容纳指定的容量。如果Capacity被显式设置为0,则公共语言运行库将其设置为默认容量。默认容量为16。
在调用Clear后,Count为0,而此时Capacity切是默认容量16,而不是0
#4楼 得分:0回复于:2008-06-16 19:40:29
但好像楼主说的是Capacity默认成了8呀!什么叫“显式设置为0”呢?
#5楼 得分:20回复于:2008-06-16 19:52:04
相关问题
asp.net新手提问,关于多条件查询的问题.NET技术/ ASP.NET - CSDN社区 ...
怎么同时执行一个数组的Sql? .NET技术/ C# - CSDN社区community.csdn.net