我正在做一个小纸牌游戏,foreach循环在集合中的最后一次迭代中抛出一个错误。我认为这与内存寻址有关,因此添加了要迭代的handTemp列表。仍然抛出同样的错误,有人能帮上忙吗?谢谢。
List<Card> handTemp = new List<Card>();
handTemp = players[0].hand;
foreach (Card c in handTemp)
{
   if (c.strName == crd.strName)
   {
       players[0].hand.Remove(c);
       pile.Add(c);
   }
}发布于 2014-04-02 19:03:57
您使用handTemp变量的想法是正确的,但在您的实现中有一个错误:
List<Card> handTemp = new List<Card>();
handTemp = players[0].hand;这基本上是说“创建一个新的变量handTemp,为它分配一个新的列表,然后完全丢弃该列表,而不是将handTemp指向players[0].hand”。您可能想要做的是:
List<Card> handTemp = new List<Card>(players[0].hand);或者,正如亨克下面评论的那样,如果你在奇妙的.NET 3.5+世界中,你可以使用LINQ方法:
var handTemp = players[0].hand.ToList();https://stackoverflow.com/questions/22809260
复制相似问题