将字典添加到另一个字典C#

将字典添加到另一个字典C#,c#,.net,data-structures,C#,.net,Data Structures,是否可以将一个字典添加到另一个包含不同字典值的字典 Dictionary<String, Func<String>> d1 = new Dictionary<String,Func<String>>(); Dictionary<String, Func<String,String>> d2 = new Dictionary<String, Func<String,String>>(); Diction

是否可以将一个
字典
添加到另一个包含不同字典值的
字典

Dictionary<String, Func<String>> d1 = new Dictionary<String,Func<String>>();
Dictionary<String, Func<String,String>> d2 = new Dictionary<String, Func<String,String>>();
Dictionary<String, Dictionary> dHolder = new Dictionary<String, Dictionary>();
dHolder.add("key",d1);
dHolder.add("key",d2); 
Dictionary d1=新字典();
字典d2=新字典();
Dictionary dHolder=新字典();
d.添加(“键”,d1);
添加(“键”,d2);

如果使用
IDictionary
接口,则可以执行此操作,所有字典(无论使用何种类型参数)都从该接口继承

Dictionary<String, Func<String>> d1 = new Dictionary<String,Func<String>>();
Dictionary<String, Func<String,String>> d2 = new Dictionary<String, Func<String,String>>();
Dictionary<String, IDictionary> dHolder = new Dictionary<String, IDictionary>();

dHolder.Add("key1", d1);
dHolder.Add("key2", d2); 
Dictionary d1=新字典();
字典d2=新字典();
Dictionary dHolder=新字典();
d.添加(“键1”,d1);
添加(“键2”,d2);

但是,在检索这些值时,您需要经历取消绑定这些值的痛苦。

您可以,但不完全是您编写的方式

var dict1 = new Dictionary<string, ObjectTypeA>();
var dict2 = new Dictionary<string, ObjectTypeB>();
var holder = new Dictionary<string, IDictionary>();

holder["key1"] = dict1;
holder["key2"] = dict2;

一种方法是将
dHolder
的TValue设置为
对象
,然后在检索后将其转换为相关类型

    Dictionary<String, Func<String>> d1 = new Dictionary<String, Func<String>>();
    Dictionary<String, Func<String, String>> d2 = new Dictionary<String, Func<String, String>>();
    Dictionary<String, Object> dHolder = new Dictionary<String, Object>();
    dHolder.Add("key1", d1);
    dHolder.Add("key2", d2);

    Dictionary<String, Func<String>> val1 = dHolder["key1"] as Dictionary<String, Func<String>>;
    Dictionary<String, Func<String, String>> val2 = dHolder["key2"] as Dictionary<String, Func<String, String>>;
Dictionary d1=新字典();
字典d2=新字典();
Dictionary dHolder=新字典();
d.添加(“键1”,d1);
添加(“键2”,d2);
Dictionary val1=dHolder[“key1”]作为字典;
Dictionary val2=dHolder[“key2”]作为字典;
备注:

  • as
    如果强制转换失败,运算符返回
    null
  • 您还可以使用字典的
    TryGetValue
    方法通过其键安全地检索值

谢谢您抽出时间。这很有帮助。
holder["key1"]["newKey"] = new ObjectTypeA();    //Works
holder["key1"]["newKey2"] = new ObjectTypeB();   //Runtime exception
    Dictionary<String, Func<String>> d1 = new Dictionary<String, Func<String>>();
    Dictionary<String, Func<String, String>> d2 = new Dictionary<String, Func<String, String>>();
    Dictionary<String, Object> dHolder = new Dictionary<String, Object>();
    dHolder.Add("key1", d1);
    dHolder.Add("key2", d2);

    Dictionary<String, Func<String>> val1 = dHolder["key1"] as Dictionary<String, Func<String>>;
    Dictionary<String, Func<String, String>> val2 = dHolder["key2"] as Dictionary<String, Func<String, String>>;