特殊集合
处理位的集合
处理位可以使用BitArray
类和BitVector32
结构。区别在于BitArray可以重新设置大小。而BitVector32基于栈,因此比较快。
BitArray bits = new BitArray();
//...
foreach(bool bit in bits)
{
Write(bit ? 1 : 0);
}
改变时可以观察的集合
如果需要集合中的元素何时删除或添加的信息,就可以使用ObservableCollection<T>
类。
最初是为WPF定义的,名称空间为System.Collections.ObjectModel
。在dotNet Core中需要NuGet包System.ObjectModel。
不能改变的集合
使用不可变的集合,可以添加Nuget包System.Collections.Immutable。
ImmutableArray<string> a1 = Immutable.Create<string>();
ImmutableArray<string> a2 = a1.Add("XXX");
//Add方法不改变集合本身,而是返回一个新的不变的集合。
//Add调用之后a1仍然是空集合,而a2是包含一个元素的不变集合。
可以在多个线程中同时访问的集合
.NET在System.Collections.Concurrent
中提供了几个线程安全的集合类。线程安全的集合类可以防止多个线程以相互冲突的方式访问集合。
(END)