C#集合

C#集合

++数组的局限性:数组只能存储相同类型的数据算法

 

int[] intArray = newint[2];数据库

intArray[0] = 1;编程

intArray[1] = 2;设计模式

intArray[2] =卧底; //报错类型不匹配数组


++集合的类型安全

++++泛型集合与非泛型集合。网络

--泛型集合类通常位于System.Collections.Generic名称空间。数据结构

--非泛型集合类位于System.Collections名称空间。性能

此外,System.Collections.Specialized名称空间中也包含一些有用的集合类。学习


++非泛型集合

++++下面是各类经常使用的System.Collection命名空间的类:

++++++动态数组(ArrayList它表明了可被单独索引的对象的有序结合。它基本上能够替代一个数组。可是,与数组不一样的是,您可使用索引在指定的位置添加和移除项目,动态数组会自动从新调整它的大小。它也容许在列表中进行动态内存分配、增长、搜索、排序各项。

++++++堆栈(Stack它表明了一个后进先出的对象集合。当您须要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项,称为弹出元素。

++++++队列(Queue它表明了一个先进先出的对象集合。当您须要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

++++++哈希表(HashTable它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,并且您能够识别一个有用的键值。哈希表中的每一项都有一个键/值对。 键用于访问集合中的项目。



++泛型集合

++++下面是各类经常使用的System.Collection.Generic命名空间的类。

++++++Dictionary<TKey, Tvalue>同哈希表同样,标示根据键进行的键值对的集合,不一样的是对键值进行了类型限定。

++++++List<T>ArrayList同样,标示经过索引访问对象的列表,不一样的是对存储的对象进行了类型限定。

++++++Stack<T>Stack同样,不一样的是对存储的对象进行了类型限定。

++++++Queue<T>Queue同样,不一样的是对存储的对象进行了类型限定。


++ArrayList动态数组

++++1、动态的增长和减小元素

++++2、实现了ICollectionIListIEnumerable接口。

++++3、灵活的设置数组的大小。

++++4、不安全的集合类型。

++++5、其元素为值类型时,效率不高(装箱和拆箱耗性能)

++++ArrayList经常使用方法与描述

-- Add()  将对象添加到ArrayList的结尾处

-- Insert()  将元素插入ArrayList的指定索引处

-- Remove()  ArrayList中移除特定对象的第一个匹配项

-- RemoveAt()  移除ArrayList的指定索引处的元素

-- Reverse()  将整个ArrayList当中元素的顺序反转

-- Contains()  肯定某元素是否在ArrayList

-- Clear()  ArrayList中移除全部元素


++List<T>泛型动态数组

++++1List类是ArrayList列的泛型等效类。

++++2、一样继承了IList接口,IEnumrator接口和ICollection

++++3、与ArrayList不一样的是,声明集合时须要声明集合内部的数据类型,即T的类型。

++++4、安全的集合类型。

++++5、某种状况时,在处理值类型时其处理速度比ArrayList快的多。

++++List<T>经常使用方法与描述

-- Add()  将对象添加到List<T>的结尾处

-- Insert()  将元素插入List<T>的指定索引处

-- Remove()  List<T>中移除特定对象的第一个匹配项

-- RemoveAt()  移除List<T>的指定索引处的元素

-- Reverse()  将整个List<T>当中元素的顺序反转

-- Contains()  肯定某元素是否在List<T>

-- Clear()  List<T>中移除全部元素

-- IndexOf(T)  搜索指定对象,并返回整个List<T>中第一个匹配项的从0开始的索引


++常见集合和列表实现接口

++++IEnumerator<T> 这个接口定义了方法GetEnumerator(),返回一个实现了IEnumerator接口的枚举。 若是将foreach语句用于集合,就须要实现该接口。

++++ICollection<T> ICollection<T>接口由泛型集合类实现。 使用这个接口能够获取集合中的元素个数(count),把集合复制到数组中(CopyTo()),还能够添加和删除元素。

++++IList<T> IList<T>接口用于可经过位置访问其中的元素列表,这个接口定义了一个索引器,能够在集合指定位置插入或删除某些项。List<T>接口派生自ICollection<T>接口。

++++IDictionary<TKey, TValue> IDictionary<TKey, TValue>接口由包含键和值的泛型集合类实现。 使用这个接口能够访问全部的键和值。 使用键类型的索引器能够访问某些项,还能够添加或删除某些项。


++堆栈(Stack

++++1、后进先出(LIFO)的一种数据结构,本质上堆栈也是一种线性结构。

++++2、线性结构的基本特色: 即每一个节点有且只有一个前驱节点和一个后续节点。

++++3、随着像Stack中添加元素,容量经过从新分配按需自动增长。

++++4、能够接受null做为有效值。

++++5、容许重复的元素。

++++6、不安全的数据结构。

++++7、其泛型为Stack<T>

++++Stack经常使用方法与描述

-- Push()  将对象插入Stack的顶部(入栈操做)。

-- Pop()  移除并返回Stack顶部的对象(出栈操做)。

-- Peek()  返回位于stack顶部的对象,但不移除。

-- Contains()  肯定某元素是否在栈中。

-- Clear()  stack中移除全部对象。

-- Count()  获取栈中包含的元素个数。


++队列(Queue

++++1、先进先出(FIFO)的一种数据结构。

++++2、随着向Queue中添加元素,容器经过从新分配按需自动增长,能够经过TrimToSize来减小容量。

++++3、能够接受null做为有效值。

++++4、容许重复的元素。

++++5、不安全的数据结构。

++++6、其泛型为Queue<T>

++++7、在A*算法中会用优先级队列处理路径节点。

++++Queue经常使用方法与描述

-- Enqueue()  将对象添加到Queue的结尾处,入队。

-- Dequeue()  移除并返回位于Queue开始处的对象。

-- Peek()  返回位于Queue开始处的对象但不将其移除。

-- Contains()  肯定某元素是否在Queue中。

-- Clear()  Queue中移除全部对象。

-- Count()  获取Queue中包含的元素个数


++HashTable(哈希表)

++++1、处理和表现相似key-value的键值对的集合。

++++2key值必须惟一,区分大小写。

++++3Value能够是变量,也能够是对象。

++++HashTable经常使用方法与描述:

-- Add()  将指定的键和值添加到哈希表中。

-- Clear()  Hashtable中移除全部的元素。

-- ContainsKey()  判断Hashtable是否包含指定的键。

-- ContainsValue()  判断Hashtable是否包含指定的值。

-- Remove()  Hashtable中移除带有指定的键的元素。

-- Keys()  获取一个ICollection,包含Hashtable中的键。

-- Values()  获取一个ICollection,包含Hashtable中的值。




#立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++立钻哥哥推荐的拓展学习连接(Link_Url

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++C#事件http://www.javashuo.com/article/p-zmwruvql-gm.html

++++C#委托http://www.javashuo.com/article/p-uozpymaf-gh.html

++++C#集合http://www.javashuo.com/article/p-sfqfdqsf-ex.html

++++C#泛型http://www.javashuo.com/article/p-xrttqngo-ee.html

++++C#接口http://www.javashuo.com/article/p-vhlfplgv-dm.html

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类http://www.javashuo.com/article/p-olslkfao-cq.html

++++C#数据类型http://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity3D默认的快捷键http://www.javashuo.com/article/p-wuwcrclr-s.html

++++游戏相关缩写http://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity引擎基础http://www.javashuo.com/article/p-beommoeb-ka.html

++++Unity面向组件开发http://www.javashuo.com/article/p-eigmuvut-dt.html

++++Unity物理系统http://www.javashuo.com/article/p-nqvvciwv-kd.html

++++Unity2D平台开发http://www.javashuo.com/article/p-ycaagdtj-hs.html

++++UGUI基础http://www.javashuo.com/article/p-rukxwckw-mc.html

++++UGUI进阶http://www.javashuo.com/article/p-wcatruhq-gt.html

++++UGUI综合http://www.javashuo.com/article/p-dkccmqii-gg.html

++++Unity动画系统基础http://www.javashuo.com/article/p-mbrdouxy-dq.html

++++Unity动画系统进阶http://www.javashuo.com/article/p-aqaqpbkh-bp.html

++++Navigation导航系统http://www.javashuo.com/article/p-dswwllas-t.html

++++Unity特效渲染http://www.javashuo.com/article/p-ckojjyfj-bp.html

++++Unity数据存储http://www.javashuo.com/article/p-bvlzynso-m.html

++++Unity中Sqlite数据库http://www.javashuo.com/article/p-ejutsbxl-ca.html

++++WWW类和协程http://www.javashuo.com/article/p-dbwmhsav-cy.html

++++Unity网络http://www.javashuo.com/article/p-sqrlntgh-dw.html

++++设计模式简单整理http://www.javashuo.com/article/p-rngqugib-hg.html

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++UML类图http://www.javashuo.com/article/p-sxberuew-bm.html

++++Unity知识点0001http://www.javashuo.com/article/p-ryvdxxjr-ep.html

++++U3D_Shader编程(第一篇:快速入门篇)http://www.javashuo.com/article/p-kyppgrac-gz.html

++++U3D_Shader编程(第二篇:基础夯实篇)http://www.javashuo.com/article/p-qkyowtli-hv.html

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/


--_--VRunSoft:lovezuanzuan--_--