C# BitArray可以是动态的吗?或者是列表<;布尔>;唯一的办法?

C# BitArray可以是动态的吗?或者是列表<;布尔>;唯一的办法?,c#,.net,C#,.net,看看BitArray的方法,我看不到任何向数组中添加新布尔值的方法——那么BitArray的大小是静态的吗?我使用了很多位(几百万,也许几千万),所以我非常喜欢BitArray的优势,它只使用布尔数组空间的1/8,但是,我需要它是动态的。使用List是使用动态长度的唯一方法吗?或者可能是列表和按位操作-有什么办法吗?您可以围绕它创建一个包装类,实现IList,但使用位数组存储数据。请记住,您可以使用。调整位数组的大小。我从未意识到Length属性有一个setter。。。知道这一点很好。如果我每次

看看BitArray的方法,我看不到任何向数组中添加新布尔值的方法——那么BitArray的大小是静态的吗?我使用了很多位(几百万,也许几千万),所以我非常喜欢BitArray的优势,它只使用布尔数组空间的1/8,但是,我需要它是动态的。使用
List
是使用动态长度的唯一方法吗?或者可能是
列表
和按位操作-有什么办法吗?

您可以围绕它创建一个包装类,实现
IList
,但使用位数组存储数据。请记住,您可以使用。

调整
位数组的大小。我从未意识到Length属性有一个setter。。。知道这一点很好。如果我每次都对长度进行++调整,这在性能方面可能不是很明智吗?@neuromouse:不,那一点都不好。@neuromouse:调用Setter来“Length”属性需要O(n)个操作。每次调整数组大小时,它都会复制到新的长度数组中。与Getter不同,它只需要O(1)个操作。[来自MSDN]@neuromouse:对不起,我没有附加链接。你可以找到它。即使是1亿比特也只有12.5兆字节。为什么不把东西分配到最大的预期大小,而忘记将其动态化呢?问题是我没有最大的预期大小——我正在编写一个压缩算法,最大大小取决于文件大小……在这种情况下,最大大小可能比内存大。您应该有一个固定的缓冲区,当它填满时,将其刷新到磁盘。