第06篇:C#星夜拾遗之几个重要的集合类
技术之外的话
苏轼《后赤壁赋》:有客无酒,有酒无肴;月白风清,如此良夜何?技术员在做技术之余,欣赏一下古诗词也是很好的。呵呵,这是一些闲话。
前言
在C中要保存一组数据,通常要做一个数组或链表来存放。在C#中,我们不用这么麻烦了,因为C#中提供了一些实用的集合类,通过这些集合类,可以方便的管理一组或多组内存对象。这些集合包括ArrayList、HashTable、List<T>等。
ArrayList类
MSDN中对ArrayList的介绍只有一句话:使用大小可按需动态增加的数组实现 IList 接口。这里推荐ArrayList的原因是在C#中不支持动态数组,可以通过实用ArrayList实现动态数组的功能。
对ArrayList的操作有常用的Add、Insert、Remove、IndexOf。通过这些方法可以实现器大部分操作。对于这些操作可以参考这里,或请参见MSDN中的说明ArrayList成员。
Hashtable类
MSDN中的描述:表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。
有些朋友可能手工的实现过Hashtable的功能。在C语言中散列算法是很重要的,遗憾的是笔者没有学好,所学的知识只能够草草应付老师作业了事。好在C#中提供了Hashtable类来实现键/值对的操作功能。
Hashtable的操作更为简单,Add方法用来添加一个键/值对,通过键可以直接访问到值,也就是说,如果定义了一个dt的Hashtable对象,则可以通过dt[key],得到一个Object对象的Value,如果这个key值不存在,则会返回一个null。
这些操作都是很方便和使用的,不需要多说。希望了解的朋友可以参考MSDN中的Hashtable类和Hashtable成员。
List<T>类
MSDN中的描述:表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。
这里的强类型类表即所谓的泛型。什么是泛型呢?单单这一个问题就够讨论上几页了,我只简单的说明:所谓泛型,指的是T可以是任何其它类型,但必须是一个固定的类型。当这个类型确定后,List<T>对象只能是T类的实例,这是我对泛型用法上的认识,希望了解正解的朋友可以参考C#泛型简介。
List<T>在用法上并没有什么特别,C#为它提供了丰富的操作,可以参照MSDN中的List<T>类和List<T>成员对其进行了解。
结束语
这么快就结束了,这篇其实只提出了这三个类,并没有对它们的用法进行说明。我将其列出,只是为了告诉初学者朋友,常用的集合中,这三个是很重要的。希望深入了解,请参照MSDN。