C# C中数组的keyvaluepair列表#

C# C中数组的keyvaluepair列表#,c#,arrays,silverlight,list,C#,Arrays,Silverlight,List,我正在开发Silverlight应用程序。因为SL不支持arraylist,所以我只能处理数组和对象列表。 我想将keyvaluepair列表转换为数组。 但当我做以下事情时: private KeyValuePair<String, int>[] array1; List<KeyValuePair<String, int>> list1 = methodCall.Result(); array1 = list1.ToArray(); 私钥值对[]数组1;

我正在开发Silverlight应用程序。因为SL不支持arraylist,所以我只能处理数组和对象列表。 我想将keyvaluepair列表转换为数组。 但当我做以下事情时:

private KeyValuePair<String, int>[] array1;
List<KeyValuePair<String, int>> list1 = methodCall.Result();
array1 = list1.ToArray();
私钥值对[]数组1;
List list1=methodCall.Result();
array1=list1.ToArray();
我已经调试并确认list1的结果并不是由于方法调用而为空。但是,即使在转换之后,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);
    }
}
私钥值对[]数组1;
私钥值对[]getlocalUniversities()
{
ASASService.ASASASSERVICECLIENT client1=新的ASASASSERVICE.ASASASSERVICECLIENT();
client1.getLocalUniversitiesCompleted+=新事件处理程序(client\u getLocalUniversitiesCompleted);
client1.getLocalUniversityAsync();
返回阵列1;
}
void client_getLocalUniversitiesCompleted(对象发送方,ASASService.getLocalUniversitiesCompletedEventArgs ex)
{
if(ex.Error==null&&ex.Result!=null)
{
列表1=示例结果;
array1=list1.ToArray();
}
其他的
{
MessageBox.Show(例如Error.Message);
}
}
//

ASASService方法getLocalUniversities()返回一个列表。 从那里,我看到它有1个(预期)结果,包括。 但是,当我在这里得到它作为ex.Result时,ex.Result包含1个结果,其中包括。
我认为您在调试时可能犯了错误。假设您的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();
KeyValuePair[]数组1;
List list1=新列表();
列表1.添加(新的KeyValuePair(“一”,1));
列表1.添加(新的KeyValuePair(“两个”,2));
列表1.添加(新的KeyValuePair(“三”,3));
array1=list1.ToArray();

您不是碰巧声明了一个局部变量
array1
,并将结果设置为该变量吗?@JeffMercado的评论很有意义,因为您发布的代码不完整-array1显然是一个字段,但其他两行看起来像属于某个方法。这里还发生了一些其他事情-这是什么?“与
列表勉强凑合”
?99%的时候我会放弃
ArrayList
,因为
List
?我唯一能想到的是某种隐式转换正在发生,因为List.ToArray(T)返回IEnumerable,而array1不是泛型,而是KeyValuePair[]的一种类型。是的,它应该工作得很好,除此之外,它不是直接的-数据源是通过一个服务传递的,作为ASSERVICE.getLocalUniversitiesCompletedEventArgs exA有点不同的问题。您的服务调用getLocalUniversities()返回array1,但array1在返回时还没有有意义的结果。Silverlight中的服务调用是异步的,因此当您返回array1时,完成的事件很可能仍在执行。如果你检查一下ex.结果,我怀疑你的服务有问题。
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();