【发布时间】:2017-12-02 06:10:33
【问题描述】:
C# 不允许我这样做。
foreach (Point point in filledPoints)
{
point.X = 0;
}
filledPoints 是一个List<Point>
它给了我一个编译器错误:“filledPoints 是一个 foreach 迭代变量,因此无法编辑关联的成员”(对不起,该消息是德语,我不擅长翻译)。但这有效:
foreach (Point point in filledPoints)
{
Point point2 = point;
point2.X = point2.X / oldSize.Width * Size.Width;
}
为什么这不起作用,有没有更优雅的方法可以绕过它?
【问题讨论】:
-
错误信息告诉你它为什么不起作用。
-
它只是告诉我它不起作用但不是为什么@Servy
-
我怀疑它是否会告诉您
That it doesn't work还会在哪一行引发错误......?你知道如何使用调试器..?如果是这样设置断点并告诉我们有效的错误 -
@KeineAhnung 您使用的是哪个版本的 Visual Studio/.NET/C#?我找不到将
" it doesn't work"作为错误消息的版本。 -
@KeineAhnung 忽略我,我在开玩笑。尝试并简化:您收到该错误的原因是因为您正在修改
foreach中的值(不允许这样做)。通常使用引用类型可以修改属性,但Point不是引用类型,它是struct。因此,当您尝试修改属性时,实际上是在修改整个事物。
标签: c# properties iteration