我定义了一个叫做敌人的矩形列表,我试图通过列表中的矩形移动并递减它们的X值,但是我收到错误“无法修改'i',因为它是一个foreach迭代变量“。我想知道这有什么问题,如果有正确的方法可以解决它。
foreach (Rectangle i in enemies)
{
i.X --:
}
答案 0 :(得分:8)
值按值复制;这就是为什么他们被称为“价值类型”。执行此操作时,您正在制作矩形的副本,然后更改副本。现在,恰好是foreach循环生成了值的不可变副本并告诉您无法更改它,这很好,因为它只是抓住了您的错误。如果您将更改变为可变副本,则可能很长时间没有找到该错误。
你的敌人类型应该是引用类型,而不是值类型。让敌人包含一个矩形,而不是 一个矩形。然后你可以在对敌人的引用中改变矩形。