【问题标题】:How do you return 2 variables in C#/csharp? [duplicate]如何在 C#/csharp 中返回 2 个变量? [复制]
【发布时间】:2020-04-08 21:23:38
【问题描述】:

参考方法WutHap(对不起,我没有写cmets),我需要同时返回int agg和int sub来获得方法NumGen在int agg和main上的sub .我知道您可以使用数组和元组,但我在这样做时遇到了麻烦。如果您需要更多上下文,请询问需要澄清的内容。我很愚蠢,所以说它需要更多上下文可能不会导致实际的澄清。是的,我知道代码很糟糕,但这不是重点。

class Program
    {
        static void Main(string[] args)
        {
            int agg = 50;
            int sub = 50;
            for (int i = 0; i < 100; i++)
            {
                WutHap(agg, sub);
            }
            int pop = sub + agg;
            Console.WriteLine("Total aggs = " + agg);
            Console.WriteLine("Total subs = " + sub);
            Console.WriteLine("Total population = " + pop);
            Console.ReadKey();
        }
        static string NumGen()
        {
            string[] pengs = new string[2]{"agg", "sub"};
            Random numGen = new Random();
            int mepi = numGen.Next(1, 2);
            int mepi2 = numGen.Next(1, 2);
            string pemi = pengs[mepi];
            string pemi2 = pengs[mepi2];
            string whoMet = pemi + ", " + pemi2;
            return whoMet;
        }
        static int WutHap(int agg, int sub)
        {
            NumGen();
            switch (NumGen())
            {
                case ("agg, agg"):
                    --agg;
                    --agg;
                    break;
                case ("agg, sub"):
                    ++agg;
                    ++agg;
                    ++agg;
                    --sub;
                    break;
                case ("sub, agg"):
                    --sub;
                    ++agg;
                    ++agg;
                    ++agg;
                    break;
                case ("sub, sub"):
                    ++sub;
                    ++sub;
                    break;
            }
        }

    }

【问题讨论】:

  • I know you can use arrays and tuples, but I'm having trouble doing it. touples 应该适合你的情况,使用 touples 有什么问题?
  • 我实际上只是尝试过数组并且以前没有处理过元组。我会试试的。
  • 你可以:使用 C# 的 ref/out 参数,返回一个元组或创建一个小类。
  • 您可能还可以将变量作为参考传递并直接更改它们(如 Carra 建议的那样),而无需返回任何内容。还有,你为什么要连续执行两次NumGen()
  • 我不知道我执行了两次。 NumGen(); switch (NumGen()你是说那里?我以为你必须在方法中执行它才能调用它。

标签: c# arrays variables methods tuples


【解决方案1】:

您可以使用 C# 7 语法从方法返回多个值:

static void Main(string[] args)
{
    var (a, b) = Foo();
}


private static (int, int) Foo()
{
    return (1, 2);
}

更新:

使用Tuple&lt;int, int&gt;

static void Main(string[] args)
{
    var (a, b) = GetMultipleValue();
    Tuple<int, int> tuple = GetMultipleValue();
}

public static Tuple<int, int> GetMultipleValue()
{
    return Tuple.Create(1, 2);
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-12-13
  • 2021-06-09
  • 2015-09-13
  • 2012-01-04
  • 2013-02-28
  • 1970-01-01
  • 2012-09-08
  • 2021-01-29
相关资源
最近更新 更多