《C#入门经典》不懂
最近在看《C#入门经典》第四版,214页有一段话感觉很纠结,是一个关于扑克牌程序的,部分代码如下: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 deskCard = 0;
bool foundCard = false;
while (foundCard == false)
{
deskCard = sourceGen.Next(52);
if (assigned[deskCard] == false)
foundCard = true;
}
assigned[deskCard] = true;
newDeck[deskCard] = cards[i];
}
newDeck.CopyTo(cards, 0);
}
这个方法的最后一行使用了System.Array类的CopyTo()方法,把newDeck中的每张扑克牌复制到cards中,也就是说使用同一个cards对象中的同一组Card对象,而不是创建新的实例.如果使用cards = newDeck,就会用另一个对象代替cards引用的对象实例。如果其他地方的代码仍保留对原caeds实例的引用,就会出现问题——不会洗牌。
上面都是原文,什么“使用同一个cards对象中的同一组Card对象”,什么“用另一个对象代替cards引用的对象实例……不会洗牌”,一头雾水。本人初学C#,望看过《C#入门经典》朋友解释一下。