C#Dictionary总是返回最后一个值

时间:2012-07-23 15:58:31

标签: c# .net arrays dictionary field

我创建了字典并为其插入了3个字段:

Dictionary<string, Map> targets = new Dictionary<string, Map>();
targets.Add("Pláž - střed", new Map("Pláž - sever", "Vrak letadla", "Džungle", "Vrak letadla"));
targets.Add("Vrak letadla", new Map("Pláž střed", "nothing", "Roští", "nothing"));
targets.Add("Roští", new Map("nothing", "nothing", "Tenký lesík", "Vrak letadla"));

当我尝试获取字段targets[Pláž - sever]时,映射构造函数参数包含"nothing", "nothing", "Tenký lesík", "Vrak letadla" - 最后一个字段的值,第二个和第三个字段的值相同。你能帮我解决一下这个问题吗? 我需要第一个字段来返回它的值,而不是第三个字段的值。

3 个答案:

答案 0 :(得分:5)

你的问题开头有点奇怪 - 但我怀疑你会发现你的Map类有静态字段而不是实例字段。这意味着您有一组与该类型相关的字段,而不是该类型的任何特定实例 ...所以每次覆盖这些字段时,您都会失去以前的所有字段数据

只是猜一下......

答案 1 :(得分:0)

您需要做的是:

var a1 = new Map("Pláž - sever", "Vrak letadla", "Džungle", "Vrak letadla"));
var a2 = new Map("Pláž střed", "nothing", "Roští", "nothing"));

在调试器中运行此代码并检查a1和a2的值。有可能是你的Map类搞砸了,例如声明为static的字段或其他类似的字段

答案 2 :(得分:0)

您尚未在词典中添加Key "Pláž - střed"的任何项目,因此您无法获得该项目因为它根本无法使用。

因此,尝试使用"Pláž - střed"键添加项目,然后访问它。