2

我有一本参差不齐的字典:

 Dictionary<string, Dictionary<int, Dictionary<string, string>>> tierOptions = new Dictionary<string, Dictionary<int, Dictionary<string, string>>>();

稍后,我有代码在数组中设置这些值之一:

 tierOptions[optionID][npID]["tName"] = cboTier.Text;

问题是,当它运行这部分代码时,所有“tName”元素都设置为 cboTier.Text 而不仅仅是一个元素。

例如,如果 optionID 为 1,npID 为 8,我有这三个:

 tierOptions[1][8]["tName"]
 tierOptions[2][8]["tName"]
 tierOptions[3][8]["tName"]

该特定代码行将设置所有三个,而不仅仅是 tierOptions[1][8]["tName"]

知道为什么要这样做吗?谢谢!

4

2 回答 2

3

听起来就像您在多个“维度”(您的术语)中使用了相同的字典实例。由于这是一个参考,它们都是共享的(这里没有自动克隆到隔离副本)。

填充数据时,请注意在数据应该分开时使用隔离的字典实例。

于 2011-08-07T19:20:52.263 回答
0

是的,我会说 sae 作为 Marc。请看一下这个例子,你如何从你的字典类型中检索 vlaue:

        Dictionary<string, Dictionary<int, Dictionary<string, string>>> dic = new Dictionary<string, Dictionary<int, Dictionary<string, string>>>();
        //add to 1st dic:
        dic.Add("A", new Dictionary<int, Dictionary<string, string>>());
        //add to 2nd dic:
        dic["A"].Add(1, new Dictionary<string, string>());
        //add to 3rd dic:
        dic["A"][1].Add("a", "value 1");

        //string KeyIn3rdDic = dic["A"][1].ToString();
        string ValueIn3rdDic = dic["A"][1]["a"]; //result is "value 1";        
于 2011-08-07T19:30:45.950 回答