C#中的集合类的使用.docxVIP

  • 8
  • 0
  • 约2.59万字
  • 约 15页
  • 2017-11-05 发布于河北
  • 举报
C#中的集合类的使用.docx

C#集合之ArrayList1、ArrayList定义System.Collections.ArrayList类是一个特殊的数组(即动态数组)。通过添加和删除元素,就可以动态改变数组的长度。2.优点动态的增加和删除元素实现了ICollection和IList接口灵活的设置数组的大小3.ArrayList的构造器构造器函数注释public?ArrayList();默认的构造器,将会以默认(16)的大小来初始化内部的数组public?ArrayList(ICollection);用一个实现了ICollection接口的对象来构造,并将该集合的元素添加到ArrayListpublic?ArrayList(int);用指定的大小来初始化内部的数组4、ArrayList的属性属性名注释Count目前ArrayList包含的元素的数量,这个属性是只读的。Capacity目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。说明:Capacity是ArrayList可以存储的元素数。Count是ArrayList中实际包含的元素数。Capacity总是大于或等于Count。如果在添加元素时,Count超过Capacity,则该列表的容量会自动加倍扩充。如果Capacity的值显式设置,则内部数组也需要重新分配以容纳指定的容量。如果Capacity被显式设置为0,则公共语言运行库将其设置为默认容量。默认容量为16。在调用Clear后,Count为0,而此时Capacity确是默认容量16,而不是05.ArrayList的方法方法名注释Int Add(object value);用于添加一个元素到当前列表的末尾?用于添加一批元素到当前列表的末尾Void Remove(object obj);用于删除一个元素,通过元素本身的引用来删除Void RemoveAt(int index);用于删除一个元素,通过索引值来删除Void RemoveRange(intindex,int count);用于删除一批元素,通过指定开始的索引和删除的数量来删除Void Insert(intindex,object value)用于添加一个元素到指定位置,列表后面的元素依次往后移动Void InsertRange(intindex,Icollectioncollec)用于从指定位置开始添加一批元素,列表后面的元素依次往后移动Void Sort()对ArrayList或它的一部分中的元素进行排序。Void Reverse();将ArrayList或它的一部分中元素的顺序反转。IntIndexOf(object)IntIndexOf(object,int)IntIndexOf(object,int,int)返回ArrayList或它的一部分中某个值的第一个匹配项的从零开始的索引。没找到返回-1。IntLastIndexOf(object)IntLastIndexOf (object,int)IntLastIndexOf (object,int,int)返回ArrayList或它的一部分中某个值的最后一个匹配项的从零开始的索引。没找到返回-1。?Bool Contains(object)确定某个元素是否在ArrayList中。包含返回true,否则返回falseVoid TrimSize()?这个方法用于将ArrayList固定到实际元素的大小,当动态数组元素确定不在添加的时候,可以调用这个方法来释放空余的内存。Void Clear();清空ArrayList中的所有元素Array ToArray()这个方法把ArrayList的元素Copy到一个新的数组中。?6、ArrayList的使用注意事项1、IsSynchronized属性和ArrayList.Synchronized方法????IsSynchronized属性指示当前的ArrayList实例是否支持线程同步,而ArrayList.Synchronized静态方法则会返回一个ArrayList的线程同步的封装。????如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用lock来保持线程同步,例如:ArrayList?list?=?new?ArrayList();lock(?list.SyncRoot?)?//当ArrayList为非线程包装的时候,SyncRoot属性其实就是它自己,但是为了满足ICollection的SyncRoot定义,这里还是使用SyncRoot来保持源代码的规范性{list.Add(?“Add?a?Item”?);}?????如果使用ArrayList.Synchronized方法返回的实例,那么就不用考虑线程同

文档评论(0)

1亿VIP精品文档

相关文档