.NET基础之集合
集合可以说是数组的超集,集合可以维护对象数组,集合包含了更高级的功能。例如控制对其包含的对象的访问、搜索和排序等。数组是固定的,一旦我们创建好了数组,不能在现有数组的末尾添加新项,除非我们创建新的数组。
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;
}
}
}
.NET基础之集合的更多相关文章
- java基础-Map集合
java基础-Map集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Map集合概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它 ...
- JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在&l ...
- 第6节:Java基础 - 三大集合(上)
第6节:Java基础 - 三大集合(上) 本小节是Java基础篇章的第四小节,主要介绍Java中的常用集合知识点,涉及到的内容包括Java中的三大集合的引出,以及HashMap,Hashtable和C ...
- Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...
- python基础数据类型--集合(set)
python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...
- 备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!
前言 回首来看2020年,真的是印象中过的最快的一年了,真的是时间过的飞快,还没反应过来年就夸完了,相信大家也已经开始上班了!俗话说新年新气象,马上就要到了一年之中最重要的金三银四,之前一直有粉丝要求 ...
- java基础技术集合面试【笔记】
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- c#基础笔记-----------集合
首先所谓集合是用于管理对象的容器类.一方面集合将独立的对象汇集成群集,作为一个群集来管理,以便进行整体性操作:而另一方面,集合可以方便地获取群集中的个体,进行个体化操作.在.Net中,集合被封装为对象 ...
- Java基础--说集合框架
版权所有,转载注明出处. 1,Java中,集合是什么?为什么会出现? 根据数学的定义,集合是一个元素或多个元素的构成,即集合一个装有元素的容器. Java中已经有数组这一装有元素的容器,为什么还要新建 ...
随机推荐
- BestCoder Sequence
hdu 4908 Bestcoder Problem Description Mr Potato is a coder.Mr Potato is the BestCoder. One night, ...
- IDL中File_Search函数用法详解(转)
来自:http://blog.sina.com.cn/s/blog_764b1e9d01014ajp.html 在利用IDL进行批处理时,通常用到file_search函数进行输入路径文件的搜索,现根 ...
- The _imageingft C module is not installed
遇到的问题如图所示,使用的方法: 下载地址:http://effbot.org/downloads 并没有解决,有人用这样的方法成功了,只能说很遗憾,我并没有成功 大神给的解决办法,不要再win平台下 ...
- poj 2983 差分约束
思路: 设dis[i]为标号为i的点到0号点的距离.对于P A B X,我们能得到等式dis[a]-dis[b]=x,那么可以化为两个不等式dis[a]-dis[b]>=x和dis[b]-dis ...
- 用bat使用date和time命令
D:\>date /T 2010-12-10 星期五 D:\>echo %date:~0,10% 2010-12-10 date:命令(别忘记date后面有个冒号) ~0:从索引0开始取内 ...
- U-boot新手入门
U-boot新手入门 一.编译U-boot 二.U-boot命令详解 1.帮助命令 # help autoscr -run script from memory base -print or set ...
- C#性能优化实践
性能主要指两个方面:内存消耗和执行速度.性能优化简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短. 本文以.NET平台下的控件产品MultiRow为例,描述C# ...
- oracle中比较两表表结构差异和数据差异的方法
在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异.比较两个表中的数据是否相同,并找出差异数据? 分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误.对于 ...
- Android之帧动画2
创建自定义对话框: // 对话框构建器 Builder builder = new AlertDialog.Builder(this); // 创建出一个空的对话框 final AlertDialog ...
- Office升级到2013版后无法登录微软账号问题
自打office从2010版升级到2013版,就再也无法登录微软账号了.每次点击登录,弹出来的框就显示:this feature has been disabled by your administr ...