2017-12-05 3 views
0

Ich habe den folgenden Code:Kopieren Objektdaten zu Haufen Standort

public class Entity 
{ 
    public int Number; 
    public string Text; 
} 

System.Collections.Generic.List<Entity> list = new List<Entity>(); 
list.Add(new Entity() { Number = 100, Text = "hello1" }); 
list.Add(new Entity() { Number = 200, Text = "hello2" }); 

Entity sampleEntity = new Entity() { Number = 300, Text = "World" }; 

list[0] = sampleEntity // this does only replace the pointer in the list 

list[0].Text = sampleEntity.Text; // this writes to the pointer in list 
list[0].Number = sampleEntity.Number; // this writes to the pointer in list 

Was ich möchte wissen, ob es der Durchführung eines memcopy der gesamten Objektdaten auf dem Heap jede mögliche Art und Weise ist -Location list[0] Einstiegspunkte auf? Ich meine in C++ ist es ein einfaches dereferenzieren *list[0] = *entity;

+2

Arbeiten auf dieser Ebene mit .net wird selten benötigt. vielleicht möchten Sie eine Klonmethode implementieren. –

Antwort

0

Nicht, wenn Entity Geräte ICloneable (siehe Creating a copy of an object in C#).

Ich würde persönlich nur eine neue Entity instanziieren.

list[0] = new Entity { Number = sampleEntity.Number, Text = sampleEntity.Text };