StructPerformance: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung
Dietsch (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
Zeile 3: Zeile 3:
{{BA|Greitschus|Wenn man den Artikel noch etwas aufbläht, kann man ihn umbenennen und als Artikel für "by Value" und "by Reference" verwenden. Ich denke, das wäre sinnvoller, als nur auf das Problem mit Structs einzugehen.}}
{{BA|Greitschus|Wenn man den Artikel noch etwas aufbläht, kann man ihn umbenennen und als Artikel für "by Value" und "by Reference" verwenden. Ich denke, das wäre sinnvoller, als nur auf das Problem mit Structs einzugehen.}}
{{BA|Justus|Es gibt noch das Problem des Boxings in Listen u.ä.
{{BA|Justus|Es gibt noch das Problem des Boxings in Listen u.ä.
<source lang="csharp">
Point p;
Point p;
p.x = p.y = 1;
p.x = p.y = 1;
Object o = p;    // Verpackt den Punkt in ein Object, mit Allozieren für Objekt, Kopieren von p nach o
Object o = p;    // Verpackt den Punkt in ein Object, mit Allozieren für Objekt, Kopieren von p nach o
p = (Point)o;    // Entpackt den Punkt und kopiert ihn dann in den Platz für p.
p = (Point)o;    // Entpackt den Punkt und kopiert ihn dann in den Platz für p.
 
</source>
Das kann also auch so relativ schnell recht lahm werden. Das gilt auch, wenn man Point in Listen speichert.
Das kann also auch so relativ schnell recht lahm werden. Das gilt auch, wenn man Point in Listen speichert.
}}
}}
{{BA|Justus|Schaut Euch den Quelltext dieser Seite an, dann seht Ihr, was ich meine...}}


Wenn man in C# mit [[CSharp#Structs|Structs]] arbeitet gibt es vor allem im Hinblick auf die Performance ein paar Aspekte die man beachten sollte. Dieser Artikel zeigt die Unterschiede in der Verwendung von Structs und worauf man achten muss.
Wenn man in C# mit [[CSharp#Structs|Structs]] arbeitet gibt es vor allem im Hinblick auf die Performance ein paar Aspekte die man beachten sollte. Dieser Artikel zeigt die Unterschiede in der Verwendung von Structs und worauf man achten muss.