书上一道选择题的选项:list<T>和Dictionary<K,V>都可以循环遍历整个元素对象我感觉是正确的,但是老师说只有List<T> 遍历的才是对象,Dictionary遍历的不叫对象,我很晕啊,它们存的都是一样的东西,为什么List<T>遍历出来就叫对象,Dictionary<K,V>遍历出来就不叫?

解决方案 »

  1.   

    LZ可以用你的书去敲你老师了.
    KeyValuePair<TKey,TValue>的实例不叫对象叫什么?
    这是赤裸裸的种族歧视口牙!(最后一句大误)
      

  2.   

    T,K,T都是针对对象的类型而言的,没有对象应用就不会涉及对象的类型。深入一点(可能超出你们的理解范围,但是我希望能够深入去理解)地说,List<T>和Dictionary<K,V>都有同样根类,就是IEnumerable<T>,即对象的集合列表。Dictionary<K,V>要复杂一些,中间经过IEnumerable<KeyValuePair<K, V>>这个方式(也就是使用KeyValuePair成对的对象)来实现的。
      

  3.   

    list <T> 和 Dictionary <K,V> 都是 IEnumerable <T> 的具体实现形式,这个知识可以开阔你对于集合概念的视野。
      

  4.   

    "Dictionary <K,V>要复杂一些,中间经过IEnumerable <KeyValuePair <K, V>>这个方式(也就是使用KeyValuePair成对的对象)来实现的。"也就是说,Dictionary <K,V>的key 元素 和 value元素 都是对象?是这个意思吗?
      

  5.   


    呵呵,不用了解深入的东西,那么<K,V>本来也是说明key和value都是可以指代非常具体的对象的。我只是把Dictionary<K,V>的概念稍微深入一点,说明设计这个类型的人也要说明任何一个Dictionary<K,V> 实例同时也是一个 IEnumerable <T> 实例,而后者要说明的就是一个一个可以枚举的对象形成的集合。
      

  6.   

    public class Dictionary<TKey,TValue> : IDictionary<TKey,TValue>, ICollection<KeyValuePair<TKey,TValue>>, 
        IEnumerable<KeyValuePair<TKey,TValue>>, IDictionary, ICollection, IEnumerable, 
        ISerializable, IDeserializationCallback
    Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的。Dictionary<int, int> _dictionary = new Dictionary<int, in>();
    foreach(KeyValuePair<int, int> item in _dictionary)
     {
     }
      

  7.   

    list<T>  里面是一个对象,Dictionary <k,v>  里面,k 是一个属性,V也是一个属性。当然在整个集合中k的类型是一样的,V的类型也是一样。只是也许这个k 和V能够确定一个对象。两个当然都是存放的对象。
    可能你的老师的意思是<T>  这个T是一个对象 
    <k,v> 这个括号里只是这个对象的某些属性。