24. oktober 2008 - 15:04
Der er
8 kommentarer og 1 løsning
problem med updatering af struct
Hejsa Jeg har denne struct: public struct Employee { Guid contactid; decimal privatecaruse; public Employee(Guid contactid) { this.contactid = contactid; this.privatecaruse = 0; } public Guid Contactid { get { return contactid; } set { this.contactid = value; } } public decimal Privatecaruse { get { return privatecaruse; } set { this.privatecaruse = value; } } } Senere i min kode har jeg en metode som løber en List<AllEmployees> igennem og opdatere hvert enkelt med en værdi: foreach (Employee e in AllEmployees) { e.Privatecaruse = privatecaruse.Km; } Dette giver dog fejlen: Cannot modify members of 'e' because it is a 'foreach iteration variable'. Jeg forstår såmen godt hvad der menes med fejlen, men burde jeg ikke kunne opdatere mit Employee struct på denne måde?
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
24. oktober 2008 - 15:16
#1
Det kan man vist kun med variabler, der er reference-typer (og ikke value-typer). Hvis du laver det til en klasse, så går det vistnok (utestet).
24. oktober 2008 - 15:40
#4
Der er en tommelfinger regel i .NET som siger at man skal bruge class til noget som kan aendres og struct til noget som ikke kan aendres. Jeg er ikke helt enig i den regel. Men det her er et godt eksempel hvor den giver mening. Hvis du kunne aendre de her structs ville du nemlig komme til at aendre i en kopi af dem og ikke i originalen.
24. oktober 2008 - 15:47
#6
Tror jeg forstår. Gør nu heller ikke den store forskel om jeg laver en List med klasser eller struct. Det sjove er at hvis jeg i min struct har en List så kan jeg godt add() til denne, mens en variabel ikke kan ændres. :-/ Vil i dele lidt points?