我定义了一个称为敌人的矩形列表,我试图在列表中的矩形中移动并递减它们的 X 值,但我收到错误消息“无法修改‘i’,因为它是一个 foreach 迭代变量”我想知道这有什么问题,是否有正确的方法。
foreach (Rectangle i in enemies)
{
i.X --:
}
最佳答案
值类型按值复制;这就是为什么它们被称为“值类型”的原因。执行此操作时,您正在制作矩形的副本,然后复制。现在,foreach 循环恰好生成了该值的不可变副本 并告诉您不能更改它,这很好,因为它刚好捕获了您的错误。如果您一直在对可变副本进行更改,您可能很长时间都不会发现错误。
您的 Enemy 类型可能应该是引用类型,而不是值类型。让敌人包含一个矩形,而不是一个矩形。然后,您可以改变对敌人的引用中的矩形。
关于c# - 在 foreach 循环中修改对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471173/