我有一个结构列表,我想更改一个元素。例如 :
MyList.Add(new MyStruct("john"); MyList.Add(new MyStruct("peter");
现在,我想更改一个元素:
MyList[1].Name = "bob"
但是,每当我尝试执行此操作时,都会出现以下错误:
无法修改System.Collections.Generic.List.this [int]’的返回值,因为它不是变量
如果我使用类列表,则不会发生此问题。
我猜答案与结构是值类型有关。
因此,如果我有一个结构列表,我应该将它们视为 只读 吗?如果我需要更改列表中的元素,那么应该使用类而不是结构?
MyList[1] = new MyStruct("bob");
C#中的struct应该几乎总是设计成不可变的(也就是说,一旦创建,就无法更改其内部状态)。
在您的情况下,您要做的是替换指定数组索引中的整个结构,而不是尝试仅更改单个属性或字段。