在c# -List中使用web服务

本文关键字:web 服务 -List | 更新日期: 2023-09-27 18:06:02

score#UPDATED#这可能听起来很蠢,但我已经被这个问题困了三天了!我是c#新手。

我正在尝试使用c#的web服务。我设法用以下代码行在Java中使用web服务:

            List x = new ArrayList<Score>();
            x = topScores();
            System.out.println("x" + x.size());
            System.out.println("TOP SCORES:");
            for (Object o : x) {
                Score s1 = (Score) o;
                System.out.println(s1.getScore());
            }

我需要显示一个分数列表,但似乎无法在c#中找到它。这就是我被c#困住的地方:

           List<object[]> list = new List<score[]>();

我已经尝试了大量不同的声明集合的变体,但都不能通过这个。我想我知道如何遍历一个列表,但我不能通过声明它。下面是我的错误提示:

Cannot implicitly convert type `System.Collections.Generic.List<score>' to `System.Collections.Generic.List<object>'

如果我把声明改成:

List<score> list = new List<score>();
list = service.TopScores();

我得到同样的错误,但这次我得到一个消息说:

"Object[] TopScores()"

我的Java代码片段的c#等效是什么?我真的很感激任何帮助或建议!感谢您的宝贵时间!

在c# -List中使用web服务

List<>类属于称为泛型的集合类别,它允许您创建强类型对象数组。List部分暗示了一个数组,因此您不需要将类型也声明为数组。不做List<object[]>,只做List<object>。您也不能更改列表的数据类型。如果你想创建一个Score列表,你应该这样做。

List<Score> scores = new List<Score>();

那么你就可以用像

这样的分数填充列表
Score newScore = new Score();
scores.Add(newScore); 

或者

感谢您的帮助…我明白了…

        LoginService service = new LoginService();
        List<score> listA = new List<score>();
        object[] array = listA.ToArray();
        array = service.TopScores();

声明该列表时需要使用相同的类型。

List<score> list = new List<score>();
然后

    foreach(Score score in list)
    {
    //do something
    }

看起来您不需要创建List<object>,因为您的代码总是知道列表中的元素是Score类型的。你可以这样做

List<Score> list = new List<Score>(); // Not really necessary because you assign it a different value in the next line.
list = topScores().Select(o => o.ToString()).ToList();
...
System.Console.WriteLine("x{0}", list.Length);
System.Console.WriteLine("TOP SCORES:");
foreach (var score in list) {
    System.Console.WriteLine(score.GetScore());
}

然而,如果你真的想从List<string>创建一个List<object>,最简单的方法是:

List<string> stringList = ...
List<object> objectList = stringList.ToList<object>();