2012-07-23 107 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"密鑰,然後訪問它。