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 structs. create immutable struct (i.e., 1 cannot changed after has been created) or create class.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -