Heim >Backend-Entwicklung >C++ >Erstellt ToList() eine tiefe Kopie oder eine flache Kopie einer Liste?

Erstellt ToList() eine tiefe Kopie oder eine flache Kopie einer Liste?

Barbara Streisand
Barbara StreisandOriginal
2024-12-30 19:25:11797Durchsuche

Does ToList() Create a Deep Copy or a Shallow Copy of a List?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn