c# - 从方法返回 List<int> 并在 C# 中打印值时出现问题

标签 c# console-application .net-core-3.0

我有一个像这样的方法static List<int> Compare(List<int> a, List<int> b) 我希望这个功能return [aPoints bPoints]类似 [2 1] 但是,我坚持使用 if 循环后存储值。陈述并将其放入分数中。 我试过这个:

static List<int> Compare(List<int> a, List<int> b)
{        
    int aPoints = 0;
    int bPoints = 0;
    List<int> score = new List<int>() { aPoints, bPoints }; 

    for (int i = 0; i < 3; i++)
    {
        if (a[i] > b[i])
        {
            aPoints++;
        }
        else if (a[i] < b[i])
        {
            bPoints++;
        }
    }

    return score;
}

并将它们打印在:

static void Main(string[] args){}

最佳答案

这是一个非常简单的解决方案。只需创建一个空列表,然后添加 aPointsbPoints在返回调用者之前立即执行此操作。

static List<int> Compare(List<int> a, List<int> b)
{        
    int aPoints = 0;
    int bPoints = 0;
    List<int> score = new List<int>();

    for (int i = 0; i < 3; i++)
    {
        if (a[i] > b[i])
        {
            aPoints++;
        }
        else if (a[i] < b[i])
        {
            bPoints++;
        }
    }
    score.Add(aPoints);
    score.Add(bPoints);
    return score;
  • 或者您也可以直接在return处创建您的列表。像这样:
static List<int> Compare(List<int> a, List<int> b)
{        
    int aPoints = 0;
    int bPoints = 0;

    for (int i = 0; i < 3; i++)
    {
        if (a[i] > b[i])
        {
            aPoints++;
        }
        else if (a[i] < b[i])
        {
            bPoints++;
        }
    }

    return new List<int>() { aPoints, bPoints};
  • 此外,您可以使用语义上更正确的方式,因为您的列表始终有 2 个值。使用tuple :
static (int aPoints, int bPoints) Compare(List<int> a, List<int> b)
{        
    int aPoints = 0;
    int bPoints = 0;

    for (int i = 0; i < 3; i++)
    {
        if (a[i] > b[i])
        {
            aPoints++;
        }
        else if (a[i] < b[i])
        {
            bPoints++;
        }
    }

    return (aPoints, bPoints);
}

跟进你的评论,如果你想打印Compare的内容那么,方法返回 List<int>你可以这样做:

List<int> ret = Compare(someList, anotherList);
foreach (int n in ret)
{
    Console.WriteLine(n);
}
  • 或者您可以使用经典的for像这样循环:
List<int> ret = Compare(someList, anotherList);
for (int i = 0; i < 2; i++)
{
    Console.WriteLine(ret[i]);
}

但是,在此循环中,假设您的列表始终内部包含 2 个元素。一般方法是将循环定义更改为 for (int i = 0; i < ret.Count; i++)这样它就会迭代列表中的每个可用项目,就像foreach一样循环。

关于c# - 从方法返回 List<int> 并在 C# 中打印值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881168/

相关文章:

delphi - 如何让控制台应用程序等待 "Enter"键,但在一段时间后自动继续?

.net - Azure 文本到语音将 SpeakTextAsync 转换为有效的 NAudio 波流

asp.net-core - ASP.NET Core 3 Blazor : Run on localhost of server ok, 但在服务器外部运行错误:WebSocket 握手期间出错:意外的响应代码:200

c# - 高架赛车游戏中的汽车/车辆在拐角处漂移

c# - DBContext使用可空的外键附加唯一对象时引发错误

c# - 导致重复 ID 问题的分离实体

c# - 就我而言,List.Add 中的数据为 Null

c - 这个 C 程序不工作

c++ - 需要帮助创建一个使用我编写的头文件的简单控制台程序