当前位置:  开发笔记 > 编程语言 > 正文

使用字典作为其他字典中的键

如何解决《使用字典作为其他字典中的键》经验,为你挑选了2个好方法。

我想用DictionaryTKey另一种Dictionary.类似于python的东西.我试过这个,但它给了我错误.

Dictionary, int> dict = new Dictionary, int>();
Dictionary dict2 = new Dictionary();
dict2["abc"] = "def";
dict[dict["abc"] = 20;

recursive.. 10

它给你带来了什么错误?是否抱怨你在第4行丢失了支架?

第4行看起来应该是:

dict[dict["abc"]] = 20;

但是,你可能是这个意思,因为"abc"不是dict的关键:

dict[dict2["abc"]] = 20;

dict2["abc"]string,当字典的关键应该是一个Dictionary.

但是,在此之前,让我们重新审视你原来的目标.您不应该首先使用可变类型作为字典键.

这可能是您正在寻找的代码:

Dictionary dict  = new Dictionary();
Dictionary dict2 = new Dictionary();
dict2["abc"] = "def";
dict[dict2["abc"]] = 20;

但很难说清楚.



1> recursive..:

它给你带来了什么错误?是否抱怨你在第4行丢失了支架?

第4行看起来应该是:

dict[dict["abc"]] = 20;

但是,你可能是这个意思,因为"abc"不是dict的关键:

dict[dict2["abc"]] = 20;

dict2["abc"]string,当字典的关键应该是一个Dictionary.

但是,在此之前,让我们重新审视你原来的目标.您不应该首先使用可变类型作为字典键.

这可能是您正在寻找的代码:

Dictionary dict  = new Dictionary();
Dictionary dict2 = new Dictionary();
dict2["abc"] = "def";
dict[dict2["abc"]] = 20;

但很难说清楚.



2> Peter Oehler..:

只是把它放在那里,我经常发现处理复杂的词典就像你描述的那样,用它们使用真实的名字要好得多,而不是试图让代码的读者排除它.

您可以根据个人喜好选择以下两种方式之一.使用using语句创建编译器别名.请注意,您必须使用完全限定类型名称,因为这是编译器别名.

using ComplexKey = System.Collections.Generic.Dictionary;
using ComplexType = System.Collections.Generic.Dictionary<
   System.Collections.Generic.Dictionary,
   String
   >;

或者你可以采用完整的类型,并实际创建一个继承自Dictionary的类.

class ComplexKey : Dictionary { ... }
class ComplexType : Dictionary { ... }

这样做可以让您和您的代码的读者更容易理解您正在做的事情.我的一般经验法则是,如果我正在创建一个泛型的泛型,那么就应该考虑建立一些一等公民代表我的逻辑.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有