Laden...

Generic Collection ändert vorhergehende Elemente

Erstellt von kacka159 vor 5 Jahren Letzter Beitrag vor 5 Jahren 716 Views
K
kacka159 Themenstarter:in
1 Beiträge seit 2018
vor 5 Jahren
Generic Collection ändert vorhergehende Elemente

Hi,
ich habe ein Objekt, welches neben ein paar Eigenschaften auch eine Untermenge von mehreren Listen hat.
Wenn ich dieses Objekt jetzt einer Collection hinzufüge und dann in der Schleife nochmals die Eigenschaften der Listen innerhalb des Objekts ändere, dann ändert sich auch die Liste in der Collection. Vermutlich sehr einfache Lösung, aber ich komme leider nicht drauf...:-(


List<ReportDto> Reports = new List<ReportDto>();

dann kommt meine äußere foreach Schleife:


ReportDto actionReport = new ReportDto();
actionReport.Nr = version.Nr;
...

und meine innere foreach Schleife:


var contentReport = new ContentReport();
contentReport.Description = el.Description;
…
actionReport.ContentReport = contentReport;
Reports.Add(actionReport);

wenn ich die innere Schleife nun durchlaufe, dann ändert er mir die vorhergehenden Eigenschaften, z.B. die Description, des ContentReport in der Reports Collection...
Ich hoffe dies war einigermassen verständlich

3.003 Beiträge seit 2006
vor 5 Jahren

Wenn du eine Kopie erstellen und damit weiterarbeiten möchtest, solltest du das auch tun. Du dagegen arbeitest mit zwei Containern, die dieselben Objekte enthalten.

Lesestoff:

IClonable: https://docs.microsoft.com/de-de/dotnet/api/system.icloneable
Referenztypen und Werttypen in .NET: https://de.wikibooks.org/wiki/Arbeiten_mit_.NET:_Grundlagen:_Datentypen/_Wertetypen_und_Verweistypen

Mit anderen Worten musst du für deine Objekte eine Methode zur Verfügung stellen, die ein Objekt kopieren (klonen) kann, und diese Methode dann benutzen.

LaTino
EDIT: typo

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)