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

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

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

public string PlayerCards(string player1C1, string player1C2) { generatedCard = randomCard.Next(1, 52); player1C1 = generatedCard.ToString(); player1C1 = player1C1 + ".png"; return player1C1, player1C2; } 

我做了一些谷歌搜索,但我没有找到我需要的东西。

一些选择:

  • 使用out参数:

     public string PlayerCards(out string x) 

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

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

  • 返回一个Tuple

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

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

我还鼓励你在适当的地方使用局部变量 – 我怀疑generatedCard应该是一个局部变量而不是它当前的(可能)实例变量。

你可以返回元组: Tuple

 Tuple t = new Tuple(player1C1,player1C2); return t; 

几种可能的选择之一:

创建一个这样的结构:

 struct Players { public string Player1; public string Player2; } 

然后在你的函数中使用它,如下所示:

 public Players PlayerCards() { Players p1; generatedCard = randomCard.Next(1, 52); p1.Player1 = generatedCard.ToString(); p1.Player2 = p1.Player1 + ".png"; return p1; } 

我认为你可以使用字符串数组…

第二种方法是使用包含两个字符串值的结构或具有两个字符串成员的类,

看看这里:

  ///  /// Using struct ///  struct twoStringValue { public string s1, s2; } public twoStringValue PlayerCards(string player1C1, string player1C2) { twoStringValue tsv; generatedCard = randomCard.Next(1, 52); tsv.s1 = player1C1 = generatedCard.ToString(); tsv.s1 = player1C1 = player1C1 + ".png"; return tsv; } ///  /// Using a class ///  class TwoStringValue { public string str1; public string str2; } public TwoStringValue PlayerCards(string player1C1, string player1C2) { TwoStringValue tsv; generatedCard = randomCard.Next(1, 52); tsv.str1 = player1C1 = generatedCard.ToString(); tsv.str1 = player1C1 = player1C1 + ".png"; return tsv; } 

祝好运。