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