2012-02-07 35 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