Kei*_*ung 1 c# iteration properties
C#不允许我这样做.
foreach (Point point in filledPoints)
{
point.X = 0;
}
Run Code Online (Sandbox Code Playgroud)
filledPoints是一个List<Point>
它给了我一个编译器错误:"filledPoints是一个foreach迭代变量,因此无法编辑关联的成员"(对不起,该消息是德语,我很难翻译).但这有效:
foreach (Point point in filledPoints)
{
Point point2 = point;
point2.X = point2.X / oldSize.Width * Size.Width;
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,是否有更优雅的方式绕过它?
这是因为Point不是引用类型(它是结构而不是类).所以foreach中的point变量实际上并不是对原始Point的引用,它是一个副本.编译器不允许你修改它,因为(我假设)当你不是时,很容易认为你正在改变原文.
我不确定是否有更好的方法,但你可以通过做这样的事情来解决这个问题:
for (int i = 0; i < filledPoints.Count; i++)
{
Point temp = filledPoints[i];
temp.X = 10;
filledPoints[i] = temp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |