ArrayList是一种动态数组,在new的时候,可以不指定长度,当你添加数据的时候,发现容量不够,他会自动扩容。
引入system.collections 命名空间--实例化ArrayList对象
using system.collections(引入命名空间)
ArrayList engineers=new ArrayList();实例化一个对象
ArrayList engineers=new ArrayList(5)可指定长度
C#3.0语言的新特征
由一系列元素初始化构成,包围在{和}之间并使用逗号进行分割
访问ArrayList单个元素
(类型)arrayli[index] //按指定索引(下标)取得对象
↓
需要类型转换
se engineer=(se)engineers[0];
messagebox.show(engineer.sayhi())
arraylist.remove(对象名)//删除指定对象名的对象
arraylist.removeat(index)//删除指定索引的对象
ArrayList.clear()//清楚集合内所有元素
Add(objiec obj)添加
insert(int index,object values)在集合指定位置添加元素
-----------------------------------------------------------
属性:统计整个集合元素总量 Count
整个集合总共能容纳多个元素capacity
方法():清除集合中所有元素的方法 clear();
C#提供另一种集合 动态可维护长度 可通过关键字检索 集合hashtable
arraylist每个元素对应一个索引
hashtable 通常称为哈希表
根据键(key)可以查到相应的值(value)
ArrayList集合可以动态维护,访问元素时需要类型转换
hashtable的元素都是以键/值对的形式存在不能通过索引访问元素,只能通过key访问value
使用集合存储数据时容易出现问题:
对象存储不易控制
类型转换容易出错
泛型<T>最常见的用途是创建集合类
泛型集合可以约束集合内元素类型
典型泛型集合list<T> dictionary<k,v>
<t> <k,v>表示泛型集合中的元素类型
list<se> engineers =new list<se>();
遍历
foreach(SE se in engineers){
messagebox.show(se.sayhi());
}
dictonary<k,v>通常称为字典
<k,v>约束集合中元素类型
编译时检查类型约束
无需装箱拆箱操作
泛型
操作的数据类型被定义为一个参数
泛型类
public class 类名<T>
{
T指类型参数,代表具体的数据类型,可以是类的类型也可以是基本数据类型
}
泛型的重要的重要性
实现代码的重用,未来的主流技术
性能高,避免繁琐的装箱拆箱
提供了更好的类型安全性
clr支持泛型
this.dataGridView1.DataSource = new BindingList<SE>(li);绑定datagrideview 的代码
重新绑定datagrideview 的代码
BindingSource bs = new BindingSource();
bs.DataSource = li;
this.dataGridView1.DataSource = bs;