zoukankan      html  css  js  c++  java
  • KeyedCollection<TKey, TItem>与IDictionary<TKey, TValue>的区别

        Everybody都知道IDictionary<TKey, TValue>表示键/值对的泛型集合,是键/值对的泛型集合的基接口,典型的应用就是字典类Dictionary,但清楚KeyedCollection<TKey, TItem>的应用吗,与IDictionary又有什么区别呢?

        它提供集合键嵌入在值中的集合的抽象基类,是基于 IList<T> 泛型接口的集合与基于 IDictionary<T>泛型接口的集合之间的组合体,与基于 IList<T>泛型接口的集合一样,KeyedCollection<TKey, TItem>也是项的索引列表,与基于 IDictionary<TKey, TValue>泛型接口的集合一样,KeyedCollection<TKey, TItem> 包含与每个元素关联的一个键。

        与字典不同,KeyedCollection<TKey, TItem>的元素不是键值对;相反整个元素是值,而键嵌入在值内,KeyedCollection<TKey, TItem>中的每个键必须是唯一的,键不能为 null引用。

    应用实例:(以开源组件json.net的代码举例)

    比如有这样一个类:

     
    Code

    现在定义一个MemberMapping类的集合类,同时这个集合的每一项的值以键值对的形式存在(嵌入一个键值对),我们可以这样实现,
    先定义一个派生KeyedCollection<TKey, TItem>的集合类:
     
    Code


    这样一个元素值以键值对形式存在的集合就诞生了,下面就举例如何使用这样的一个集合类:

    比如有一个Person类:

    public class Person
    {
        public string Name
        {
            get;
            set;
        }
    
        public int Age
        {
            get;
            set;
        }
    
        public int Salary
        {
            get;
            set;
        }
    }
    //根据类型获取类的成员集合
    private MemberMappingCollection CreateMemberMappings(Type objectType)
    {
        MemberInfo[] members = objectType.GetMembers();
        foreach(MemberInfo member in members)
        {
            string mappedName;
            MemberMapping memberMapping = new MemberMapping(member.Name, member, ignored, readable, writable);
            memberMappings.AddMapping(memberMapping);
        }
    
        return memberMappings;
    }
     
    //用处
    //这样随便传入一个类型便可获得这个类型的成员以键值对形式存在的集合
    MemberMappingCollection memberMappings  = CreateMemberMappings(typeof(Person));

    (注释:memberMappings集合中的元素的值是MemberMapping实例)MemberMappong实例键值对形式,键:成员名称; 值:成员对象)

  • 相关阅读:
    python configparser模块
    python shutil模块
    软件架构百度百科
    设计模式
    python Sys module
    python time module
    对别人的敬仰就是对自己的信心。数据和计算给了人类史无前例的巨大能力,也带来了前所未有的未知,挑战着人类的自信。
    阿波罗计划里最了不起的就是自信心,这份自信,比任何事情都重要。到今天为止,我觉得美国这个国家做的最有领导力的事情就是阿波罗登月计划。今天我们享受的很多科技,从通信技术到生物医疗,再到材料以及其他很多东西,都要感谢阿波罗登月计划打下的非常好的基础。
    打一个不太恰当的比方,我们与技术的关系就像是农夫与蛇。什么是对技术的热爱?你真的相信技术会改变很多东西吗?你有没有足够的自信和热爱,去捂暖这条蛇,哪怕它苏醒以后可能会咬你一口?
    人们熟知的一句名言是:“天才是1%的灵感加99%的汗水。”可如果没有那1%的灵感,世界上所有的汗水也就仅仅是一桶汗水而已。
  • 原文地址:https://www.cnblogs.com/Komici/p/1556866.html
Copyright © 2011-2022 走看看