猿问

更改结构列表中元素的值

我有一个结构列表,我想更改一个元素。例如 :


MyList.Add(new MyStruct("john");

MyList.Add(new MyStruct("peter");

现在,我想更改一个元素:


MyList[1].Name = "bob"

但是,每当我尝试执行此操作时,都会出现以下错误:


无法修改System.Collections.Generic.List.this [int]'的返回值,因为它不是变量


如果我使用类列表,则不会发生此问题。


我猜答案与结构是值类型有关。


因此,如果我有一个结构列表,我应该将它们视为只读吗?如果我需要更改列表中的元素,那么应该使用类而不是结构?


紫衣仙女
浏览 493回答 3
3回答

倚天杖

MyList[1] = new MyStruct("bob");C#中的struct应该几乎总是设计成不可变的(也就是说,一旦创建,就无法更改其内部状态)。在您的情况下,您要做的是替换指定数组索引中的整个结构,而不是尝试仅更改单个属性或字段。
随时随地看视频慕课网APP
我要回答