【发布时间】:2018-04-24 15:45:46
【问题描述】:
我知道我现在听起来像个糟糕的程序员 - 但我是新手,我不知道如何使用这个引用的东西并传递参数,我的意思是我知道怎么做 - 但同时- 这不起作用,我不知道为什么。
static void Main(string[] args) {
DealCard(ref card);
Console.WriteLine();
Console.ReadLine();
}
private static void DealCard(string card) {
string finalNum = "";
string finalSuite = "";
bool diffCard = false;
do {
Random cardPicker = new Random();
int cardSuite = cardPicker.Next(1, 5);
if (cardSuite == 1) {
finalSuite = "Hearts";
} else if (cardSuite == 2) {
finalSuite = "Spades";
} else if (cardSuite == 3) {
finalSuite = "Clubs";
} else if (cardSuite == 4) {
finalSuite = "Diamonds";
}
int cardNum = cardPicker.Next(1, 14);
if (cardNum == 1) {
finalNum = "Ace";
} else if (cardNum == 2) {
finalNum = "Two";
} else if (cardNum == 3) {
finalNum = "Thre";
} else if (cardNum == 4) {
finalNum = "Four";
} else if (cardNum == 5) {
finalNum = "Five";
} else if (cardNum == 6) {
finalNum = "Six";
} else if (cardNum == 7) {
finalNum = "Seven";
} else if (cardNum == 8) {
finalNum = "Eight";
} else if (cardNum == 9) {
finalNum = "Nine";
} else if (cardNum == 10) {
finalNum = "Ten";
} else if (cardNum == 11) {
finalNum = "Jack";
} else if (cardNum == 12) {
finalNum = "Queen";
} else if (cardNum == 13) {
finalNum = "King";
}
string newCard = finalNum + " of " + finalSuite;
if (newCard != card) {
card = finalNum + " of " + finalSuite;
diffCard = true;
} else {
}
card = newCard;
} while (diffCard == false);
}
是的,我知道大量的“如果”令人眼花缭乱。 是的,我知道我可以在不到一半的时间内完成这项工作。 是的,我知道这是一个简单的问题。 是的,我知道我很糟糕,但我想谦虚地请求任何人帮助我停止为此脱发。
【问题讨论】:
-
您不需要这个:
DealCard(ref card);,因为这会起作用:DealCard(card);但是,如果您有意使用ref并且您知道确切原因,那就另当别论了。跨度> -
我知道你特别要求不要对大量的 if 失去理智。但是,我只想为您提供简单的替代解决方案:使用字典。键是数字,值是字符串。然后你可以用 cardValuesDict[cardNumber] 替换整个
-
在调用
DealCard之前声明var card = "";。 -
强调@aaron 的评论。你申卡了吗?任何地方??
标签: c# parameter-passing pass-by-reference