2012-02-07 68 views
1

我正在處理Silverlight應用程序。由於SL不支持數組列表,我正在使用數組和列表對象。 我想將keyvaluepair的列表轉換爲數組。 但是,當我做到以下幾點:在C中的數組keyvaluepair的列表#

private KeyValuePair<String, int>[] array1; 
List<KeyValuePair<String, int>> list1 = methodCall.Result(); 
array1 = list1.ToArray(); 

我已經調試和確認,列表1的結果不是空的,因爲該方法調用的結果。但是,即使在轉換之後,array1也是空的。我做錯了什麼?

編輯:這裏是代碼的完整代碼。

private KeyValuePair<String, int>[] array1; 
private KeyValuePair<string, int>[] getlocalUniversities() 
{ 
    ASASService.ASASServiceClient client1 = new ASASService.ASASServiceClient(); 
    client1.getLocalUniversitiesCompleted += new EventHandler<ASASService.getLocalUniversitiesCompletedEventArgs>(client_getLocalUniversitiesCompleted); 
    client1.getLocalUniversitiesAsync(); 
    return array1; 
} 
void client_getLocalUniversitiesCompleted(object sender, ASASService.getLocalUniversitiesCompletedEventArgs ex) 
{ 
    if (ex.Error == null && ex.Result != null) 
    { 
      List<KeyValuePair<string, int>> list1 = ex.Result; 
      array1 = list1.ToArray(); 
    } 
    else 
    { 
     MessageBox.Show(ex.Error.Message); 
    } 
} 

//

THE ASASService method getLocalUniversities() returns a List<KeyValuePair<String, int>>. 
From there, I see that it has 1(expected) result consisting of <"NUS", 50>. 
However, when I get it here as ex.Result, ex.Result contains 1 result consisting of <null, 0>. 
+3

你沒有偶然碰巧聲明一個局部變量'array1'並將結果設置爲? – 2012-02-07 03:13:17

+0

@ JeffMercado的評論是有道理的,因爲您發佈的代碼不完整 - array1顯然是一個字段,但其他兩行看起來像屬於一個方法。這裏還有其他事情發生 - 這是什麼? – 2012-02-07 03:27:30

+3

用「List 」做「做」嗎? 99%的時間,我會拋棄'ArrayList'來獲取'List '。 – 2012-02-07 03:28:14

回答

2

我想在調試的時候,你可能犯了一個錯誤。假設你的Result()方法工作正常,你列出的代碼應該已經工作了。我將其作爲測試運行,並且運行良好。

KeyValuePair<string, int>[] array1; 
List<KeyValuePair<string, int>> list1 = new List<KeyValuePair<string, int>>(); 
list1.Add(new KeyValuePair<string, int>("one", 1)); 
list1.Add(new KeyValuePair<string, int>("two", 2)); 
list1.Add(new KeyValuePair<string, int>("three", 3)); 
array1 = list1.ToArray(); 
+0

是的,它應該工作得很好,除非它不是直接的 - 數據源是通過傳遞的服務作爲ASASService.getLocalUniversitiesCompletedEventArgs ex – 2012-02-07 05:10:13

+0

有點不同的問題。您的服務調用getLocalUniversities()將返回array1,但array1在返回時還不會有有意義的結果。 Silverlight中的服務調用是異步的,因此當您返回array1時,完成的事件很可能仍在執行。如果您檢查ex.Result並參見我懷疑您的服務有問題。 – 2012-02-09 04:05:56