集合和泛型

集合和集合接口
1.集合
集合是指通过高度结构化的方式存储任意对象的类。
2.集合接口
每个集合接口中都定义了不同的行为 。

集合接口
 各种集合接口具有非泛型和泛型的版本。非泛型版本位于 System.Collections 命名空间,泛型版本位于 System.Collections. Generic 命名空间。
1.IComparable
2.ICollection
3.IComparer
4.IEqualityComparer
5.IDictionary
6.IEnumerable
7.IEnumerator

使用主要集合类型
使用迭代器循环访问类的成员
根据键/值对和比较器访问引用类型
   Comparer 类
   Hashable类
    (1)Sortedlist类
    (2)BitArray 类

通过迭代器循环访问类的成员
1..NET Framework 的内置集合非常有用。
2.C# 通过一个名为迭代器的新的语言构造简化了过程迭代功能。
3.通过使用 yield 语句来应用迭代器。迭代器行为只在 C# 中可用。
4.在 Visual Basic 中,必须使用 IEnumerator 接口来循环访问类的成员。

根据键/值对和比较器访问引用类型
1.Comparer 类
Comparer 类比较两个对象并检测其中一个是 大于、小于还是等于另一个。
2.Hashable类
Hashtable 类表示一个键(Key)/值(Value)对的集合,根据指定的键的哈希代码来组织这些名称/值对。
(1)Sortedlist类
  SortedList 类表示一个键/值对的集合 。
(2)BitArray 类
  BitArray 类实现一个位结构,它表示一个二进制位(1 和 0)的集合 。

使用泛型集合
1.使用泛型 List 类型创建类型安全的集合
2.使用泛型Stack集合和Queue集合
   (1)泛型 Stack 类
   (2)泛型 Queue 类

使用泛型 List 类型创建类型安全的集合
泛型 List 类可看作 ArrayList 类的泛型版本。
1.使用泛型 List 类型,可以创建提供 ArrayList 行为的泛型列表 。
2.使用 List.Enumerator 结构可以枚举泛型列表的元素。

使用泛型Stack集合和Queue集合
堆栈和队列提供 FIFO 或 LIFO 行为。
1.使用泛型 Stack 类以实现 LIFO。
2.使用泛型 Queue 类以实现 FIFO 。

1>泛型 Stack 类的功能和非泛型 Stack 类相似,只不过泛型 Stack 包含特定数据类型的元素。
2>泛型 Queue 类与非泛型 Queue 类相同,只不过泛型 Queue 包含特定数据类型的元素。

使用专用集合
专用集合是预定义集合,用于特殊或专用性很强的用途。
1.想要使用与 Hashtable 类相似的键/值对来实现一个小型集合以存放最多 10 个元素。
2.想要实现类型安全的 ArrayList来存放字符串值,并为其提供适当的枚举数。
3.要根据键/值对或使用索引位置来访问集合的元素。
4.要创建一个不区分大小写的 SortedList 类。

 .NET Framework 中可用的各种专用集合
专用String类:以下是专用 String 类的不同类型:StringCollection、StringDictionary、StringEnumerator 和 CollectionsUtil。
当将元素指定为字符串时,StringCollection 类的行为与泛型 List 类完全相同。
当将键和值都指定为字符串时,StringDictionary 类的行为与泛型 Dictionary 类完全相同。
StringEnumerator 提供对字符串集合的枚举。
CollectionsUtil 使你能够创建不区分大小写的 Hashtable 或 SortedList。
专用Dictionary类:高性能Dictionary 类是 dictionary 类型的集合类,它们使用键/值对结构来存储和检索对象,并且具有特定用途。这些类包括 ListDictionary、HybridDictionary 和 OrderedDictionary。根据元素数量,HybridDictionary 内部切换到 ListDictionary 或 Hashtable 来存储数据。如果元素数量少于 10 个,ListDictionary 将提供更好的性能;而如果元素数量多于 10 个,则 Hashtable 的性能更佳。OrderedDictionary 可以存储通过键或者索引进行排序的元素。如果元素数量为 10 个或 10 个以下,则该类将非常高效。
专用 Named Collection 类:Named Collection 类提供了集合的抽象基类,该集合包括相关联的字符串键和对象值,可以通过键或者索引访问这些对象值。
NameValueCollection 允许将多个字符串值与单个字符串键相关联。可以通过派生 NameObjectCollectionBase 类创建具有各自专用行为的键/值集合。
专用位结构:位结构提供一个用于存储 Boolean 值和小整数的简单结构。BitVector32 将 Boolean 值存储在 32 位结构中。BitVector32.Section 使你能将小整数存储在 BitVector32 类中。

专用集合是预定义集合,用于特殊或专用性很强的用途。
1.StringCollection 类
2.StringDictionary 类
3.StringEnumerator 类
4.CollectionUtil 类
5.ListDictionary类
6.HybridDictionary类
7.OrderedDictionary类
8.NameValueCollection 类
9.使用专用位结构在内存中高效地存储数据

使用集合基类
.NET Framework 提供抽象集合基类,可以使用该基类来派生出自定义集合。
1.使用集合基类创建自定义集合
2.CollectionBase类
3.ReadOnlyCollectionBase类
4.DictionaryBase类

CollectionBase类
CollectionBase 类表示强类型集合的抽象基类。
1.CollectionBase 类提供下列受保护的方法:
(1)OnRemove
(2)OnClear
(3)OnInsert
(4)OnSet
2.CollectionBase 类实现集合中的 IList 接口。
该接口包含可通过使用 List 属性(该属性作为 IList 接口的一部分实现)访问、添加以及移除的元素。

ReadOnlyCollectionBase类 
1.ReadOnlyCollectionBase 类是CollectionBase 类的只读版本。
该类是一个的抽象基类。可以使用 ReadOnlyCollectionBase 类创建只读强类型集合。
2.ReadOnlyCollectionBase 类内包含一个集合,该集合存储添加到其中的元素。
该类通过 InnerList 属性来访问该集合。

DictionaryBase类
DictionaryBase类和 DictionaryEntry 结构
DictionaryBase:DictionaryBase 类为强类型键/值对集合提供了一个抽象基类。DictionaryBase 集合中的每个元素都具有 DictionaryEntry类型。可以使用 DictionaryBase 类实现字典样式查找集合,用键/值对来搜索集合中的对象值。DictionaryBase 类提供下列受保护的方法:OnInsert、OnRemove、OnClear、OnGet、OnSet。
DictionaryBase类在执行任务期间或完成任务(例如,向集合添加项,从集合中移除项,清空集合以及获取和设置集合中项的值)后会自动调用这些方法。在这里,请注意这些方法只作为事件处理程序但不应该作为完成前面提到的任务方的法来使用。这一点很重要。这些是受保护的方法,并且在访问和指定集合中的元素时可以通过实现这些方法来提供自定义的限制或验证功能。但是,你必须在自定义集合中定义自己的公共方法以在集合中添加或移除项。Dictionary 属性返回一个类型为IDictionary的集合。Dictionary 属性返回的集合包含当前存储在自定义集合中的元素。
DictionaryEntry 结构:DictionaryEntry 结构定义字典集合中的一个字典键/值对,该结构:
作为 IDictionary 集合的支持类型。
提供两个称为 Key 和 Value 的公共属性,分别用于访问和指定键和值。
在自定义字典中实现类型安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值