有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

C#列表中的java消费web服务

得分#更新#这可能听起来很愚蠢,但我已经被这个问题困扰了三天了! 我是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#等价物是什么?我非常感谢任何帮助或建议!谢谢你抽出时间


共 (4) 个答案

  1. # 1 楼答案

    看起来您不需要创建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>();
    
  2. # 2 楼答案

    谢谢你的帮助。。。我想出来了

            LoginService service = new LoginService();
            List<score> listA = new List<score>();
    
            object[] array = listA.ToArray();
            array = service.TopScores();
    
  3. # 3 楼答案

    列表<&燃气轮机;类位于名为泛型的集合类别中,它允许您创建强类型对象数组。列表部分意味着一个数组,因此您不需要将类型也声明为数组。而不是List<object[]>,你应该只做List<object>。您也不能更改列表的数据类型。如果你想创建一个Score的列表,你应该这样做

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

    然后你可以在列表中填入分数,如

    Score newScore = new Score();
    scores.Add(newScore); 
    

    或者别的什么

  4. # 4 楼答案

    声明此列表时,您需要具有相同的类型

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

    然后

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