zoukankan      html  css  js  c++  java
  • C#中的集合有几种?

    C#中的集合有几种? 
    Array 

    ArrayList

     List<T> 

    Stack<T> 

    Queue<T> 

    Dictionary<K,V> 

    HashTable   
    集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问) 一个集合包括多个元素,即有一个集合类对象和N个元素对象 
     
    因为任何集合类都实现了IEnumerable接口,所以任何集合类对象都有一个
    GetEnumerator()方法,该方法可以返回一个实现了 IEnumerator接口的对象,这个返回的IEnumerator对象既不是集合类对象,也不是集合的元素类对象,它是一个独立的类对象。通过这个对象,可以遍历访问集合类对象中的每一个元素对象  
    如果集合类是用户自定义的集合类,则用户必须实现它的GetEnumerator()方法,否则不能使用循环。当然,与这个自定义集合类对应的IEnumerator类(实现了该接口的类),也要自定义一个才行  
    比如,ArrayList集合类对应的IEnumerator是 ArrayListEnumeratorSimple             Array集合类对应的IEnumerator是 SZArrayEnumerator       (这两个类在.net framework类库文档(msdn)中都没有介绍)  
    1.System.Colloctions中表示集合的行为的接口有: 1)ICollection 
    定义所有集合的大小、枚举数和同步方法。派生于IEnumerable 它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口) 但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义  
    2)IEnumerable 
    公开枚举数,该枚举数支持在集合上进行简单迭代 
    它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合 
    基本上所有的集合类都实现了这个接口  3)IList 
    IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口 
    是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。 

    4)IDictionary 
    IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口 是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。 IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值   
    2.System.Collections中可以直接使用的集合类有: 1)ArrayList 
    实现了接口:IList、ICollection、IEnumerable 
    只要集合未被修改,ArrayList 就可安全地同时支持多个读取器 
    随着向 ArrayList 中添加元素,容量通过重新分配按需自动增加(2倍增加) 如果需要建立一个对象数组,但不能预先知道数组的大小,就可以使用ArrayList 
    ArrayList把所有元素都当作object对象引用,因而在访问ArrayList的元素时要进行类型转换 
    优点:动态改变大小、灵活方便的插入和删除元素、可排序 缺点:插入时性能不如数组、不是强类型的  
    2)BitArray 
    实现了接口:ICollection、IEnumerable 管理位值的压缩数组。  
    3)Hashtable 
    实现了接口:IDictionary、ICollection、IEnumerable 
    可以向Hashtable中自由添加和删除元素,有些像ArrayList,但没有那么大的性能开销  
    4)SortedList 
    实现了接口:IDictionary、ICollection、IEnumerable 
    SortedLIst兼顾了ArrayList和Hashtable的优点,可按键值来排序  5)Queue 
    实现了接口:ICollection、IEnumerable Queque是队列,先进先出的访问各个元素 
    可以调用Queque对象的GetEnumerator()方法,得到IEnumerator对象,来遍历队列中的各个元素  6)Stack 
    实现了接口:ICollection、IEnumerable Stack是堆栈,后进先出的访问各个元素 
    可以调用Stack对象的GetEnumerator()方法,得到IEnumerator对象,来遍历堆栈中的各个元素  

  • 相关阅读:
    移植tslib库出现selected device is not a touchscreen I understand的解决方法
    2017- 韦东山视频学员成果精选(三)
    2017-韦东山视频学员成果精选(二)
    2017-韦东山视频学员成果精选(一)
    字符设备驱动另一种写法—mmap方法操作LED
    使用ubuntu16.04配置linux内核和busybox出现错误的解决方法总结
    100000个嵌入式学习者遇到的PING不通问题,我们使用这一个视频就解决了,牛!
    推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm
    外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
    Laravel 日志配置以及设置按日期记录日志
  • 原文地址:https://www.cnblogs.com/louby/p/4714047.html
Copyright © 2011-2022 走看看