.NET基础之集合
来源:互联网 发布:淘宝的大拿韩代敢买吗 编辑:程序博客网 时间:2024/05/23 00:59
集合可以说是数组的超集,集合可以维护对象数组,集合包含了更高级的功能。例如控制对其包含的对象的访问、搜索和排序等。数组是固定的,一旦我们创建好了数组,不能在现有数组的末尾添加新项,除非我们创建新的数组。
C#中的数组实现为System.Array类的实例,它们只是集合类中的一种,集合类的功能重要通过实现System.Collection名称空间中的接口而获得的。
System.Collection名称空间中的几个接口提供了基本的功能集合:
- IEnumerable可以迭代集合中的项。这个接口中的唯一方法GetEnumerator()可以迭代集合中的各项。使用foreach结构的对象必须要实现这个方法
- ICollection(继承与IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中。ICollection中有CopyTo(System.Array array,int index)方法和Count属性
- IList(继承于IEnumberable和ICollection)提供了集合的项列表,并可以访问这些项,以及其他一些与项列表有关的功能。
- IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了通过键码值而不是索引访问的项列表。
System.Array类实现了IList,ICollection,IEnumerable,但不支持IList的一些高级功能。
如何自定义集合类
Collection类有接口IEnumerable,ICollection和IList,可以使用其提供的List和InnerList两个受保护的属性,它们可以访问存储的对象本身。
有一个Animal类:
Public class Animal{ //类成员}
实现它的集合:
Public class Animals : CollectionBase{ public void Add(Animal newAnimal) { List.Add(newAnimal); } public void Remove(Animal oldAnimal) { List.Remove(oldAnimal); } public Animals() { }}
如果要通过索引访问,就要添加索引符。添加索引符如下:
public class Animals : CollectionBase{ ... public Animal this[int animalIndex] { get { return (Animal)List[animalIndex]; } set { List[animalIndex] = value; } }}
自定义Dictionary,使可以通过关键字访问
和上一个集合的实现例子非常类似,但是还是有一定的差别。要实现IDictionary接口,所以我们可以继承DictionaryBase,具体细节如下:
public class Animals : DictionaryBase{ public void Add(string newID, Animal newAnimal) { Dictionary.Add(newID, newAnimal); } public void Remove(string oldID) { Dictionary.Remove(oldID); } public Animals() {} public Animal this[string animalID] { get { return (Animal)Dictionary[animalID]; } set { Dictionary[animalID] = value; } }}
0 0
- .NET基础之集合
- ASP.NET控件开发基础之实现控件集合属性
- JAVA基础之集合
- java基础之集合
- java基础之 集合
- JAVA基础之集合
- Java基础之 集合
- java基础之集合
- java基础之集合
- java基础之:集合
- java基础之集合
- Java基础之集合
- Java基础之集合
- java基础之集合
- Java基础之集合
- java基础之集合
- java基础之集合
- Java基础之集合
- 利用 javax.xml.datatype.Duration 解析 activiti:dueDate="P1DT3H" 这种时间格式
- java异常 之 异常的层次结构
- 学习笔记-11.15
- git常用命令
- DEDECMS频道如何设置为二级域名(dedecms开启二级域名 方法)
- .NET基础之集合
- [iOS-GQiang]iOS app内发送短信
- 麦克风阵列技术入门(4)
- C# - Thread.Join()
- Linux系统之复制粘贴命令
- DirectDraw常用功能代码记录
- Effective JavaScript Item 62 在异步调用中使用嵌套或者命名的回调函数
- LeetCode——Interleaving String
- Storm 0.9安装指南