4、Collection<T>和KeyedCollection<TKey, TItem>
我认为范型最大的受益者就是CollectionBase类了,以前为了创建一个集合类,我们需要从CollectionBase继承,并完成强类型的方法和内部拦截操作俩部分的工作,由于有了范型,所以你将不必自己再做强类型的方法这个工作了。
原先的CollectionBase是一个抽象的类,而Collection<T>现在是一个非抽象的类了,你可以直接使用他,但老实说,如果你是程序内部使用集合,而并不对外公开你的集合,那我还是建议你使用List<T>,而不是Collection<T>。
Microsoft.在 Collection<T>上又继承了一个KeyedCollection<TKey,TItem>,这个类是原先没有的。他很有意思,他既有Collection按照数字检索的功能,又有字典按照Key检索的特点,因此他是你对外公开字典类型的集合时,理想的基础类。
他要求你必须重载.GetKeyForItem(TItem)方法,以获取指定项目的Key。但很遗憾,MS好像忘记了将字典的TryGetValue包装出来。
ReadOnlyCollection<T>非常适合只读版本的集合类的基础类。
5、BindingList<T>
通常情况下,普通的集合类(例如Collection<T>)如果绑定到表格或者其他的控件时,你将发现某些功能无法使用,例如你调用了集合的删除记录方法,但表格的显示并没有做及时的自动刷新。现在为了更方便的支持对象集合的绑定操作,MS设计了BindingList<T>类,他位于System.ComponentModel命名空间,他可以支持完整的集合绑定操作(IBingList接口),例如数据感知功能。
完。
.NET 2.0泛型集合类与.NET 1.1集合类的区别(一)
.NET 2.0泛型集合类与.NET 1.1集合类的区别(二)
我认为范型最大的受益者就是CollectionBase类了,以前为了创建一个集合类,我们需要从CollectionBase继承,并完成强类型的方法和内部拦截操作俩部分的工作,由于有了范型,所以你将不必自己再做强类型的方法这个工作了。
原先的CollectionBase是一个抽象的类,而Collection<T>现在是一个非抽象的类了,你可以直接使用他,但老实说,如果你是程序内部使用集合,而并不对外公开你的集合,那我还是建议你使用List<T>,而不是Collection<T>。
Microsoft.在 Collection<T>上又继承了一个KeyedCollection<TKey,TItem>,这个类是原先没有的。他很有意思,他既有Collection按照数字检索的功能,又有字典按照Key检索的特点,因此他是你对外公开字典类型的集合时,理想的基础类。
他要求你必须重载.GetKeyForItem(TItem)方法,以获取指定项目的Key。但很遗憾,MS好像忘记了将字典的TryGetValue包装出来。
ReadOnlyCollection<T>非常适合只读版本的集合类的基础类。
5、BindingList<T>
通常情况下,普通的集合类(例如Collection<T>)如果绑定到表格或者其他的控件时,你将发现某些功能无法使用,例如你调用了集合的删除记录方法,但表格的显示并没有做及时的自动刷新。现在为了更方便的支持对象集合的绑定操作,MS设计了BindingList<T>类,他位于System.ComponentModel命名空间,他可以支持完整的集合绑定操作(IBingList接口),例如数据感知功能。
完。
.NET 2.0泛型集合类与.NET 1.1集合类的区别(一)
.NET 2.0泛型集合类与.NET 1.1集合类的区别(二)