2014-02-07 118 views
1

我試圖訪問和檢索數組中的值,作爲數值數據類型存儲在字典中,但目前爲止沒有任何運氣。請參閱我的詞典的當前語法的下面的示例。訪問字典內數組的內容

Dictionary<string, double[]> dict= new Dictionary<string, double[]>(); 

double[] dubarray = new double[20]; 
String[] keyval = somestringarray[0].ToString(); 

然後我有一個循環將鍵/值存儲到字典中。

dict.Add(keyval[0], dubarray); 

現在我解析字典,並依賴於密鑰訪問數組中包含的值(dubarray)。爲了記錄的目的,我也想返回整個數組。目前,我被退回如下:「System.Double []」

foreach (KeyValuePair<string, double[]> item in dict) 
{ 
    System.Diagnostics.Debug.WriteLine("dict.KEY is : " + item.Key + "dict.VALUE is : " + item.Value); 
} 

有人能回答我怎樣才能訪問包含字典的每個實例中的數據元素?

+0

值*是一個Double [],這就是默認的ToString將會打印它。如果你想顯示所有的值,遍歷'item.Value'。 – crashmstr

回答

1

你可以加入數組值,並寫入:

foreach (KeyValuePair<string, double[]> item in dict) 
{ 
    Debug.WriteLine("dict.KEY is : " + item.Key + 
        "dict.VALUE is : " + String.Join(",", item.Value)); 
} 

當您在數組類型的變量調用ToString()你包含的類型名稱只是字符串 - 你的情況"System.Double[]"

+1

像一個魅力工作謝謝老兄! – techietalk

+0

現在,雖然這允許我打印字典中的值。我將如何去調用該數組實例中的特定值或索引? – techietalk

+0

@techietalk'item.Value'是'double []'數組。所以,如果你想獲得第一個值,你可以使用'item.Value [0]'。但是你需要確保數組不是空的 - 否則你會得到IndexOutOfRange異常 –

0
double[] dubarray = dict[mystring].ToArray(); 
0

發生這種情況的原因是ToString(),如果未被類覆蓋,將返回Object類型的完全限定名稱。當你這樣做時

Debug.WriteLine(item.Value); 

它會自動爲Value中的類調用ToString()函數。在這種情況下,它是一個雙精度數組,或System.double []。

你想要做的是獲取數組中的所有值,將它們串起來並顯示結果。

foreach (KeyValuePair<string, double[]> item in dict) 
{ 
    Debug.WriteLine(String.Format("dict.KEY IS : {0}\ndict.VALUE is : {1}", 
            item.Key, string.Join(", ", meow["Test"]))); 
} 
+0

現在雖然這允許我打印字典中的值。我將如何去調用該數組實例中的特定值或索引? – techietalk

+0

item.Value [index] – duraz0rz