我有一个函数,我想返回两个值。这可能吗?
这是我的代码,但它似乎不喜欢我想返回两个值。
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
以及,在调用完成后,调用者将能够看到方法中设置的值。
(不清楚你为什么要接受参数,你似乎并没有真正使用它们。)
返回一个 ValueTuple<string, string>
理想的情况下,使用C#7元组来提供元素名称。
Tuple<string, string>
PlayingCard
类型。你的代码想要做什么根本不清楚--方法的名称不清楚,而且你也没有使用参数。当你澄清了方法想要达到的目的时--对你自己和我们来说都是如此--答案可能会变得更加明显。
我也鼓励你在适当的地方使用局部变量--我怀疑你会使用 generatedCard
应该是一个局部变量,而不是目前的(可能是)实例变量。
你可以返回 tuple。Tuple<string, string>
Tuple<string, string> t = new Tuple<string, string>(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;
}
我认为你可以使用字符串数组...
第二种方法是使用一个包含两个字符串值的结构或一个包含两个字符串成员的类,。
看这里
/// <summary>
/// Using struct
/// </summary>
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;
}
/// <summary>
/// Using a class
/// </summary>
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;
}
好运。