我有这样的方法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/

10-17 01:46