(首先對不起我的英語不好)時
通過電話交換參考
我試圖做一個撲克紙牌遊戲不會在C#中工作。
由於代碼below.Those功能洗牌,
似乎通過引用調用,但最後它不工作。
private void disorderCards(PokerCardItem[] cardArray)
{
Random random = new Random();
for (int t = 0; t < 10; t ++)
for (int i = 0; i < cardArray.Length; i ++)
swapTwoCards(cardArray[i], cardArray[random.Next() % cardArray.Length]);
}
private void swapTwoCards(PokerCardItem cardA , PokerCardItem cardB)
{
PokerCardItem temp = cardA;
cardA = cardB;
cardB = temp;
}
,但如果我寫這樣的,它開始工作:
private void disorderCards(PokerCardItem[] cardArray)
{
Random random = new Random();
for (int i = 0; i < cardArray.Length; i ++)
{
int n = random.Next() % cardArray.Length;
PokerCardItem temp = cardArray[i];
cardArray[i] = cardArray[n];
cardArray[n] = temp;
}
}
這是怎麼回事? 謝謝!
C#默認通過值傳遞參數。如果你想通過引用來傳遞它們,你需要用'ref'或'out'關鍵字明確地說出來。 – InBetween