求教c#入门经典中关于实现洗牌功能的c#代码
public Deck()
{
cards = new Card[52];
public void Shuffle()
{
Card[] newDeck = new Card[52];
bool[] assigned = new bool[52];
Random sourceGen = new Random();
for (int i = 0; i < 52; i++)
{
int destCard = 0;
bool foundCard = false;
while (foundCard == false)
{
destCard = sourceGen.Next(52);
Trace.WriteLine("the value is" + destCard);
if (assigned[destCard] == false)
foundCard = true;
}
assigned[destCard] = true;
newDeck[destCard] = cards[i];
}
newDeck.CopyTo(cards, 0);
}
}
Card是我自定义的一个类,这是c#入门经典(第三版)第十章的例子,我不明白的是代码的最后一行为什么不能换成cards=newDeck ,c#入门经典上给出的解释是“Shuffle方法如果使用cards=newDeck,就会用另一个对象代替cards应用的对象实例。如果其他地方的代码仍保留对原cards实例的引用,就会出问题——不会洗牌” ,这是怎么回事呀?