在C#中返回带有函数的2个字符串

Kev*_*vin 9 c# string return

我有一个函数,我想返回2个值?这可能吗?

这是我的代码,但它似乎不喜欢我想要返回2个值

public string PlayerCards(string player1C1, string player1C2)
        {

            generatedCard = randomCard.Next(1, 52);
            player1C1 = generatedCard.ToString();
            player1C1 = player1C1 + ".png";
            return player1C1, player1C2;
        }
Run Code Online (Sandbox Code Playgroud)

我做了一些谷歌搜索,但我找不到我需要的东西.

Jon*_*eet 18

一些选择:

  • 使用out参数:

    public string PlayerCards(out string x)
    
    Run Code Online (Sandbox Code Playgroud)

    返回一个值,并将out参数(x在本例中)设置为另一个值; 调用代码也需要指定一个参数out,并且在调用完成后,调用者将能够看到方法中设置的值.

    (目前尚不清楚为什么你会接受参数;你似乎并没有真正使用它们.)

  • 回来一个 ValueTuple<string, string>

  • 创建一个新类型将两个值存储在一起,假设它是一个有意义的组合.如果值以您在其他地方使用的方式相关,那么这绝对是一个不错的选择.例如,您可以创建一个Tuple<string, string>类型,而不是让一个方法为一个卡的套装返回一个字符串,而为一个值返回一个字符串.
  • 将代码重构为两个方法调用,每个方法调用返回一个值

你的代码尝试做什么并不清楚 - 方法的名称不清楚,你不使用参数.当你澄清了方法试图实现的目标 - 对我们自己和对我们而言 - 答案可能会变得更加明显.

我还鼓励你在适当的地方使用局部变量 - 我怀疑它PlayingCard应该是一个局部变量而不是它当前的(推测)实例变量.

  • 您如何在2分钟内彻底回答此问题?“乔恩·斯凯特(Jon Skeet)太好了,他编写了一个程序来为他自动回答有关SO的问题。” (2认同)

fat*_*ihk 10

你可以返回元组: Tuple<string, string>

Tuple<string, string> t = new Tuple<string, string>(player1C1,player1C2);

return t;
Run Code Online (Sandbox Code Playgroud)

  • Sheesh,我一直在制作结构或其他东西!我一定是老了... (2认同)