Home   Cover Cover Cover Cover
 

Klassen versus Structs

Vorteile von Klassen

  • Ihre Objekte werden über Zeiger referenziert und können daher zu dynamischen Datenstrukturen wie Listen, Bäumen oder Graphen zusammengebaut werden.
  • Die Objekte gehören nicht zum lokalen Speicher der erzeugenden Methode und überleben daher diese Methode, wenn sie in globalen Datenstrukturen verankert werden.
  • Bei Klassen kann man im Gegensatz zu Structs mit Vererbung und dynamischer Bindung arbeiten.

Vorteile von Structs

  • Ihre Objekte werden nicht über Zeiger referenziert. Der Zugriff zu ihren Feldern erfordert daher keine Zeigerdereferenzierung und ist somit schneller. Methoden werden nicht mittels dynamischer Bindung aufgerufen (außer Interface-Methoden). Somit ist auch der Methodenaufruf schneller.
  • Die Objekte von Structs gehören zum lokalen Speicher der deklarierenden Methode und werden am Methodenende wieder freigegeben. Somit wird der Garbage Collector entlastet.

Structs sollte man daher für leichtgewchtige Datentypen verwenden, die man ausschließlich lokal in einer Methode verwendet und nicht zu Datenstrukturen verknüpft. Klassen verwendet man hingegen für schwergewichtigere Datentypen, deren Objekte länger leben sollen als die erzeugende Methode. Man verwendet Klassen auch dann, wenn man aus ihren Objekten dynamische Datenstrukturen aufbauen will oder wenn man später Unterklassen ableiten und ihre Methoden dynamisch gebunden aufrufen will.