c# - Cannot modify struct in a list? -
i want change money value in list, error message:
cannot modify return value of 'system.collections.generic.list.this[int]' because not variable
what wrong? how can change value?
struct accountcontainer { public string name; public int age; public int children; public int money; public accountcontainer(string name, int age, int children, int money) : this() { this.name = name; this.age = age; this.children = children; this.money = money; } } list<accountcontainer> accountlist = new list<accountcontainer>(); accountlist.add(new accountcontainer("michael", 54, 3, 512913)); accountlist[0].money = 547885;
you have declared accountcontainer
struct
. so
accountlist.add(new accountcontainer("michael", 54, 3, 512913));
creates new instance of accountcontainer
, adds copy of instance list; and
accountlist[0].money = 547885;
retrieves copy of first item in list, changes money
field of copy , discards copy – first item in list remains unchanged. since not intended, compiler warns this.
solution: not create mutable struct
s. create immutable struct
(i.e., 1 cannot changed after has been created) or create class
.
Comments
Post a Comment