集合概述 集合简单的说就是数组的升级版。他可以动态的对集合的长度(也就是集合内最大元素的个数)进行定义和维护! ArrayList ArrayList非常类似于数组。也有人称他为数组列表,它的容量可以根据需要进行动态扩充,而它的索引也会根据集合容量的扩展而重新
集合简单的说就是数组的升级版。他可以动态的对集合的长度(也就是集合内最大元素的个数)进行定义和维护!
ArrayList非常类似于数组。也有人称他为数组列表,它的容量可以根据需要进行动态扩充,而它的索引也会根据集合容量的扩展而重新分配和调整。也就是说ArrayList集合中的元素的下标是不确定的、可变的。
ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
语法:
Using System.Collections;<span style="color: #008000">//</span><span style="color: #008000">导入命名空间 </span><span style="color: #008000">//</span><span style="color: #008000">定义ArrayList对象</span> ArrayList ArrayList集合名称=<span style="color: #0000ff">new</span> ArrayList(【长度】);登入後複製
属性名称 | 说明 |
Count | 获取ArrayList中实际包含的元素数 |
返回值类型 | 方法名称 | 说明 |
int | add(Object Value) | 将对象添加到ArrayList的结尾处 |
Void | RemoveAt(int index) | 移除ArrayList指定索引处的元素 |
Void | Remove(Object Value) | 从ArrayList中移除特定的对象 |
Void | Clear() | 从ArrayList中移除所有的元素 |
在ArrayList中我们可以通过索引访问集合中的元素,但是当集合内的元素索引频繁变化时要找出每个元素的位置(索引)就变得非常麻烦你了,
C#提供了一种叫HashTable的数据结构,通常称他为哈希表也有人称他为“字典”,给它起字典这个名字是因为它和字典非常类似,都是通过一个单词查找出有关此单词的更多信息,HashTable是通过键(Key)对值(Value)来组织数据的
属性 | 说明 |
count | 获取包含在HashTable中键值对的数目 |
Keys | 获取包含HasTable中键的集合 |
Values | 获取包含HasTable中值得集合 |
返回值类型 | 方法名称 | 说明 |
void | Add(Object Key,Object Value) | 将带有指定键和值得元素添加到HashTable中 |
Void | Remove(Object Key) | 从HashTable中移除带有特定键的元素 |
Void | Clear() | 清除HashTable中的所有元素 |
通过ArrayList和HashTable存储的数据都会转换成Object类型,这就意味着它可以在一个集合中存储不同的类型元素,在遍历集合时就有可能引发强制类型转换错误的问题。而泛型集合是类型安全的,在定义时就先定了集合中的元素类型,下面将详细讲解泛型和泛型集合。
泛型是C#2.0 中的一个新特性,泛型引入了一个概念:类型参数,通过使用类型参数(T)减少了运行时强制类型转换或装箱拆箱操作的风险,同过泛型可以最大限度的重用代码,保护类型安全及提高性能,它的最常见应用是创建集合类,可以约束集合类中的元素类型。个比较典型的泛型集合是LIst
在System.Collections.Generic命名空间中定义了去多泛型集合类这些类可以代替上面的ArrayList
定义一个List
List
“
泛型集合Dictionary可以代替上面的HashTable
定义一个泛型集合Dictionary
Dictionary
在”
在集合中使用泛型只是泛型多种应用的一种,在类、方法等方面已有泛型的应用
定义一个泛型类的语法如下:
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> 类名<t><span style="color: #000000"> { </span><span style="color: #008000">//</span><span style="color: #008000">....</span> }</t>
T指类型参数,代表具体的数据类型,可以是值类型也可以是引用类型