[我眼中的C#]集合和泛型
来源:互联网 发布:济宁任城网络问政平台 编辑:程序博客网 时间:2024/05/16 11:00
当我们有很多类型一样的数据的时候,前面我们一般使用数组来进行管理,但是这样有个缺点就是数组的大小是固定的。如果我们很多类型一样的数据,比如游戏得分,我们可以集合类来进行管理,比如列表List,我们可以使用列表List很方便的添加数据,删除数据还有其他对数据的操作。
由于列表操作需要用到泛型,简单介绍一下泛型的概念。通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
列表本质是一个大小可变的数组。列表内部数据是使用数组进行的存储,一个空的列表内部会有一个长度为0的数组,当给列表中添加元素的时候,列表的容量会扩大为4,如果添加第5个的时候,列表的大小会重新设置为8,如果添加第9个元素,列表容量会扩大为16,依次增加。当列表的中的容量发生改变的时候,它会创建一个新的数组。
接下来通过例子了解一下列表的使用
接下来通过数组创建一个我们自己定义的列表:
namespace 创建MyList{ class MyList<T> { private int count; private T[] array; //构造函数(有参) public MyList(int size) { if (size >= 0) { array = new T[size]; } else { throw new Exception("数值不符合规范!"); } } //构造函数(无参) public MyList() { array = new T[0]; } //定义容量 public int Capacity { get { return array.Length; } } //定义实际长度 public int Count { get { return count; } } //添加元素方法 public void Add(T item) { if (count == Capacity) { if (Capacity == 0) { array = new T[4]; } else { T[] tempArray = new T[count * 2]; Array.Copy(array, tempArray, count); array = tempArray; } } array[count] = item; count++; } //添加所以其 public T this[int index]//是一个属性 { get { if (index >= 0 && index <= count - 1) { return array[index]; } else { throw new Exception("索引超出范围!"); } } set { array[index] = value; } } //定义插入方法 public void Insert(int index, T item) { if (index >= 0 && index <= count - 1) { if (count == Capacity) { T[] tempArray = new T[count * 2]; Array.Copy(array, tempArray, count); array = tempArray; } for (int i = count; i >index; i--) { array[i] = array[i - 1]; } array[index] = item; count++; } else { throw new Exception("索引超出范围!"); } } }}
0 0
- [我眼中的C#]集合和泛型
- [我眼中的C#]String和StringBuilder
- [我眼中的C#]XML和JSON
- [我眼中的C#]反射和特性
- 我眼中的泛型
- 我眼中的C指针
- [我眼中的C#]委托和Lambda表达式
- 谈谈我眼中的泛型
- [我眼中的C#]复杂的数据类型
- [我眼中的C#]类的介绍
- C语言我眼中的指针
- C语言我眼中的指针
- C语言我眼中的指针
- [我眼中的C#]创建一个项目
- [我眼中的C#]流程控制语句
- [我眼中的C#]正则表达式
- [我眼中的C#]多线程编程
- [我眼中的C#]网络编程
- 短信拒接流程
- 踩坑记录 Lists.newArrayList()
- Anton and Fairy Tale--二分,因为手误没写对
- leetcode-217. Contains Duplicate
- C++简单编程——鸡兔同笼问题
- [我眼中的C#]集合和泛型
- 核心编程之开篇HelloWorld
- 用c++解决简单的应用题~
- Class 'DOMDocument' not found
- Eclipse4.6(neno)手动配置Tomcat插件
- 二进制-转换结构
- IIS7.0配置ASP动态Web网站出现Microsoft JET Database Engine 错误‘80040e09’
- JAVA 中 Redis与ehcache对比与使用
- 如何通过命令行启动或者关闭 Jetty 服务器