关于结构的简单问题...我有一个结构,让我们假装它看起来像这样:
struct myStruct {
public int x, y;
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个包含该结构的列表
List<myStruct> myList = new List<myStruct>;
Run Code Online (Sandbox Code Playgroud)
然后我循环遍历列表,我想更改 x 的值......
for(int i=0; i<myList.Count; i++) {
...//do stuff to x
myList[i].x = newX;
}
Run Code Online (Sandbox Code Playgroud)
无法修改 'List<myform.myStruct>.this[int]' 的返回值,因为它不是变量
您能否澄清我对于为什么它不允许我更改 x 值的任何困惑。
结构是值类型。因此索引器的返回是列表中值的临时副本,无法修改。您必须替换列表中的结构:
var val = myList[i];
val.x = newX;
myList[i] = val;
Run Code Online (Sandbox Code Playgroud)