字典末尾的()是什么?

时间:2013-08-25 09:08:50

标签: c#

我是C#的新手,但我从未理解字典末尾的()是什么意思!

假设我有一个班级,我宣布一个这样的字段:

public Dictionary<InventoryType, Inventory> Inventory { get; private set; }

然后,在构造函数上,我有:

Inventory = new Dictionary<InventoryType, Inventory>(6);

最后的6是什么意思?谢谢!

2 个答案:

答案 0 :(得分:4)

6是初始容量。这是一个柔和的指示,它将有多大,它不是任何限制。

当您知道某个集合将包含一定数量的元素时,一次为这些元素分配空间会稍微高效一些。否则,集合将使用算法来增长,但这涉及复制数据。

大多数集合以capcity = 4开头,当填充时,它们会增长到8,然后变为16等。每次分配新的内部数组(取决于精算集合)并且必须复制现有数据。

这意味着6相当低,几乎不值得。

答案 1 :(得分:4)

来自MSDN

  

Dictionary(Int32)初始化Dictionary类的新实例,该实例为空,具有指定的初始容量,并使用默认的相等比较器作为键类型。

所以这是字典的初始大小。

请查看此question,了解您为什么要设置初始容量。