当前位置: 首页 > 知识库问答 >
问题:

C#如何将所有dictionary放入dictionary派生类型的对象中?

林正平
2023-03-14
class XDictionary<TKey, TValue> : Dictionary<string, string>
{
}

        Dictionary<string, string> d = new Dictionary<string, string>
        {
            { "x", "xx" },
            { "y", "yy" },
            { "z", "zz" }
        };

        XDictionary<string, string> x;

有没有一种方法可以在没有foreach的情况下将d放入x中,只需使用向上转播/向下转播?

共有1个答案

呼延哲
2023-03-14

首先,您必须遍历这些项的原因(这不是问题)是因为您想要复制它们。

如果只是引用字典作为新的内部表示,那么就会有多个对象处理相同的数据。

但是,这与您从它继承无关--当您从另一个字典(而不是xDictionary)创建一个新字典时--您会想要同样的东西。

所以您不会反复迭代它,但是“将d放入X”而不是每次都编写新的迭代是很简单的:

class XDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    public XDictionary() { }
    public XDictionary(Dictionary<TKey, TValue> dict)
    {
        foreach (var pair in dict)
        {
            base.Add(pair.Key, pair.Value);
        }
    }
}

Dictionary<string, string> d = new Dictionary<string, string>
{
    { "x", "xx" },
    { "y", "yy" },
    { "z", "zz" }
};

XDictionary<string, string> xDict = new XDictionary<string, string>(d);

还要注意,当您为类声明泛型类型参数时,您必须将它们转发到基类,这样才能使它有意义。

我确实不同意你问题下面的一些评论。

有一条准则说更喜欢组合而不是继承,这确实有它的原因。然而,盲目地遵循这一指导方针并不是重点,因为对于作文:

  • 您必须编写更多的代码才能真正实现相同的基本功能。
  • 您有一个分散在堆上的额外对象。

因此,如果您的意图不是将字典更改为其他内容,而是扩展它的功能,那么从它继承是绝对可以的。

你可以问自己这个问题以求清楚:

我的实现应该是某种字典(继承),还是使用字典(组合)。

 类似资料:
  • 本文向大家介绍C#如何遍历Dictionary,包括了C#如何遍历Dictionary的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#如何遍历Dictionary的具体代码,供大家参考,具体内容如下 效果图: 以上就是本文的全部内容,教会大家C#遍历Dictionary的方法,谢谢大家的阅读。

  •  Dictionary 类是用来处理字典的类。  字典,或者称为关联数组,是指保存着若干个名字和其唯一对应的值组成的“pair”的对象。  字典和数组一样使用 [ ] (间接成员选择) 运算符来操作,不同的是把下标索引换成字符串,也就是名字(键)。名字可以作为标识符,用 . (直接成员选择) 运算符来对字典中的元素进行操作。  还有,选择了不存在的元素的话,会返回 void 。  使用 delet

  • 本文向大家介绍C#中Dictionary类使用实例,包括了C#中Dictionary类使用实例的使用技巧和注意事项,需要的朋友参考一下 在C#中,使用Dictionary类来管理由键值对组成的集合,这类集合称为字典。 字典最大的特点就是能够根据键来快速查找集合中的值。 下面是一个使用字典的小实例,希望通过这个小实例,能让大家对字典操作有一个初步的了解。下面是完整代码。 实例中需要定义两个类: Sc

  • 每个键都通过冒号(:)与其值分隔,项目用逗号分隔,整个内容用大括号括起来。 没有任何项目的空字典只用两个花括号写成,如下所示:{}。 键在字典中是唯一的,而值可能不是。 字典的值可以是任何类型,但键必须是不可变的数据类型,如字符串,数字或元组。 访问字典中的值 要访问字典元素,可以使用熟悉的方括号和键来获取其值。 以下是一个简单的例子 - #!/usr/bin/python dict = {'Na

  • 在Dictionary中,每个键都通过冒号(:)与其值分隔,项目用逗号分隔,整个内容用大括号括起来。 没有任何项目的空字典只用两个花括号写成,如下所示:{}。 键在字典中是唯一的,而值可能不是。 字典的值可以是任何类型,但键必须是不可变的数据类型,如字符串,数字或元组。 访问字典中的值 要访问字典元素,可以使用熟悉的方括号和键来获取其值。 以下是一个简单的例子 - #!/usr/bin/pytho

  • Dictionary是一个抽象类,表示键/值存储库,其操作与Map非常相似。 给定键和值,您可以将值存储在Dictionary对象中。 存储该值后,您可以使用其密钥检索它。 因此,像地图一样,字典可以被认为是键/值对的列表。 字典定义的抽象方法如下 - Sr.No. 方法和描述 1 Enumeration elements( ) 返回字典中包含的值的枚举。 2 Object get(Object

  • 本文向大家介绍如何将python中的List转化成dictionary,包括了如何将python中的List转化成dictionary的使用技巧和注意事项,需要的朋友参考一下 问题1:如何将一个list转化成一个dictionary? 问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的value 解决方案: 1.利用zip函数实现 2.利用循环来实

  • 主要内容:尝试一下 - 实例,Dictionary 对象Dictionary 对象用于在名称/值对中存储信息。 尝试一下 - 实例 指定的键存在吗? 本例演示如何创建一个 Dictionary 对象,然后使用 Exists 方法来检查指定的键是否存在。 返回一个所有项目的数组 本例演示如何使用 Items 方法来返回一个所有项目的数组。 返回一个所有键的数组 本例演示如何使用 Keys 方法来返回一个所有键的数组。 返回一个项目的值 本例演示如何使用