Freigeben über


Auswählen zwischen Klassen und Strukturen

Klassen sind Verweistypen, und Strukturen sind Werttypen. Verweistypen werden auf dem Heap reserviert, und die Speicherverwaltung wird vom Garbage Collector behandelt. Werttypen werden auf dem Stapel oder inline reserviert und freigegeben, wenn sie den Gültigkeitsbereich verlassen. Im Allgemeinen ist das Reservieren und Freigeben von Werttypen mit geringerem Aufwand verbunden. Wenn sie jedoch in Szenarien verwendet werden, in denen Boxing und Unboxing in wesentlichem Umfang erfolgt, ist ihre Leistung im Vergleich zu Verweistypen gering. Weitere Informationen finden Sie unter Boxing und Unboxing (C#-Programmierhandbuch).

Weitere Informationen über Werttypen und Verweistypen finden Sie unter Allgemeines Typsystem.

Definieren Sie statt einer Klasse eine Struktur, wenn die Instanzen des Typs klein und im Allgemeinen kurzlebig oder in andere Objekte eingebettet sind.

Definieren Sie eine Struktur nur, wenn der Typ über alle der folgenden Merkmale verfügt:

  • Er stellt logisch einen einzelnen Wert dar, auf ähnliche Weise wie primitive Typen (integer, double usw.).

  • Seine Instanzen sind kleiner als 16 Bytes.

  • Er ist unveränderlich.

  • Er muss nicht häufig mithilfe von Boxing konvertiert werden.

Wenn eine oder mehrere dieser nicht Bedingungen zutreffen, erstellen Sie statt einer Struktur einen Verweistyp. Wenn diese Richtlinie nicht befolgt wird, kann dies die Leistung beeinträchtigen.

Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.

Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.

Weitere Informationen zu Entwurfsrichtlinien finden Sie unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.

Siehe auch

Weitere Ressourcen

Richtlinien für den Entwurf von Typen

Entwurfsrichtlinien zum Entwickeln von Klassenbibliotheken