C# 阻止集合的默认大小

C# 阻止集合的默认大小,c#,.net,multithreading,c#-4.0,C#,.net,Multithreading,C# 4.0,我想知道阻塞集合的默认大小。不知何故,我的程序无法在阻塞集合中添加元素。,默认构造函数构建的阻塞集合没有上限。因此,您的问题出在其他地方。此代码中的默认大小: var collection = new BlockingCollection<int>(); var collection=newblockingcollection(); 根据以下公式,它没有上限: 初始化BlockingCollection类的新实例,但不带上限 (我的重点) 您还可以通过属性了解此上限,在本例中,该

我想知道阻塞集合的默认大小。不知何故,我的程序无法在阻塞集合中添加元素。

,默认构造函数构建的阻塞集合没有上限。因此,您的问题出在其他地方。

此代码中的默认大小:

var collection = new BlockingCollection<int>();
var collection=newblockingcollection();
根据以下公式,它没有上限:

初始化BlockingCollection类的新实例,但不带上限

(我的重点)

您还可以通过属性了解此上限,在本例中,该属性将返回
-1

显然,无界阻塞集合在可以添加到其中的元素数量上仍然有限制,因为最终底层数组或周围的内存都会变满,但这不是类本身强加的人为限制

如果您观察到无法向这样的集合添加元素,它会阻塞,很明显,它不是以这种方式构造的


相反,它是用特定的限制构造的,您仍然可以使用上面显示的
.BoundedCapacity
属性来了解此限制。

默认的有界容量是-1,这意味着“没有默认容量”,除了作为
阻塞集合
,它不应该被阻塞。好的,我的问题是我不能在阻塞集合中添加元素,所以我认为集合必须是满的。因此,问题是…这意味着它没有使用默认大小。所以你的问题是两个问题:1)默认大小是多少,2)为什么我的程序不能向集合中添加元素。1)的答案是“无限制”,2)的答案是“集合已满,因此它是以特定限制构建的”。检查
.BoundedCapacity
属性以了解对集合设置的限制。