2012-07-23 111 views
0

我已经创建了字典和插入3个字段吧:C#字典总是返回一个值

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" - 最后一个字段的值,值为第二和第三场相同。你能帮我解决这个问题吗? 我需要第一个字段来返回它的值,而不是第三个字段的值。

+0

请添加代码如何查询字典。 – 2012-07-23 16:00:49

+3

'targets [“Pláž - sever”]'应该抛出一个'KeyNotFoundException',因为你从来没有用这个键添加一个项目。请显示您的真实代码或详细阐述一下,以清楚地说明您的问题。 – 2012-07-23 16:01:27

回答

5

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

只是一个猜测,但...

+0

是的!你是对的,在Map类中的字段是静态的,我甚至没有尝试看看Map类,我虽然问题是在主类中,谢谢你,我会接受这一个 – 2012-07-23 16:07:42

+0

这是一个很好的猜测 - 肯定它来自体验! – alexm 2012-07-23 16:16:21

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值。机会是你的地图类乱七八糟的,例如声明为静态或其他性质的字段

0

你还没有在字典中添加任何项目与Key"Pláž - střed"所以你不能得到该项目因为它只是简单无法使用。

所以尝试添加一个项目与"Pláž - střed"密钥,然后访问它。