首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在foreach循环中修改集合时引发错误

在foreach循环中修改集合时引发错误
EN

Stack Overflow用户
提问于 2014-04-02 18:56:27
回答 2查看 76关注 0票数 1

我正在做一个小纸牌游戏,foreach循环在集合中的最后一次迭代中抛出一个错误。我认为这与内存寻址有关,因此添加了要迭代的handTemp列表。仍然抛出同样的错误,有人能帮上忙吗?谢谢。

代码语言:javascript
运行
复制
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);
   }
}
EN

Stack Overflow用户

发布于 2014-04-02 19:03:57

您使用handTemp变量的想法是正确的,但在您的实现中有一个错误:

代码语言:javascript
运行
复制
List<Card> handTemp = new List<Card>();
handTemp = players[0].hand;

这基本上是说“创建一个新的变量handTemp,为它分配一个新的列表,然后完全丢弃该列表,而不是将handTemp指向players[0].hand”。您可能想要做的是:

代码语言:javascript
运行
复制
List<Card> handTemp = new List<Card>(players[0].hand);

或者,正如亨克下面评论的那样,如果你在奇妙的.NET 3.5+世界中,你可以使用LINQ方法:

代码语言:javascript
运行
复制
var handTemp = players[0].hand.ToList();
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22809260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档