Heim >Backend-Entwicklung >C++ >Erstellt ToList() eine tiefe Kopie oder eine flache Kopie einer Liste?
Erstellt ToList() beim Aufruf eine neue Liste?
In diesem Szenario arbeiten wir mit einer Klasse namens MyObject mit einer Eigenschaft namens SimpleInt. Nehmen wir an, wir haben eine Liste von MyObject-Instanzen. Wenn wir ToList() für diese Liste ausführen und anschließend die SimpleInt-Eigenschaft eines der Elemente in der neuen Liste ändern würden, würde sich diese Änderung dann wieder auf die ursprüngliche Liste übertragen?
ToList verstehen( ) Funktion
Die ToList()-Methode dient dazu, eine neue Kopie der Originalliste zu erstellen. In dieser speziellen Situation haben wir es jedoch mit Referenztypen zu tun (d. h. MyObject ist ein Referenztyp). Das heißt, wenn wir mit ToList() eine neue Liste erstellen, enthält die neue Liste Verweise auf dieselben Objekte wie die ursprüngliche Liste.
Konsequenz von Referenztypen
Da MyObject ein Referenztyp ist, wirkt sich die Änderung der SimpleInt-Eigenschaft eines Objekts, auf das in der neuen Liste verwiesen wird, auch auf das entsprechende Objekt in der ursprünglichen Liste aus. Dies liegt daran, dass beide Listen auf dieselben Instanzen verweisen.
Struktur vs. Klasse
Es ist wichtig zu beachten, dass dieses Verhalten nur auf Referenztypen anwendbar ist. Wenn MyObject als Struktur (Werttyp) statt als Klasse (Referenztyp) deklariert würde, würde die neu erstellte Liste über ToList() Kopien der ursprünglichen Listenelemente enthalten. Folglich hätten alle an einem Strukturelement in der neuen Liste vorgenommenen Änderungen keine Auswirkungen auf die ursprüngliche Liste.
Das obige ist der detaillierte Inhalt vonErstellt ToList() eine tiefe Kopie oder eine flache Kopie einer Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!