C# 9.0: Einführung in Records
- Matt
C# 9.0 bringt Records mit: einen Typ, der auf unveränderliche Daten ausgelegt ist und den üblichen Rumpf aus Konstruktor, Equals, GetHashCode und ToString selbst mitbringt. Hier geht es darum, was das im Alltag spart und wo die Grenzen liegen.
Was sind Records?
Records sind eine spezielle Art von Referenztypen, die hauptsächlich dazu verwendet werden, unveränderliche Datenobjekte zu modellieren. Im Gegensatz zu Klassen, die mutable sind, sind Records immutable, was bedeutet, dass ihre Eigenschaften nach der Initialisierung nicht mehr geändert werden können. Dies macht sie ideal für die Arbeit mit Datenmodellen und DTOs (Data Transfer Objects).
Beispiel für einen Record
Hier ist ein einfaches Beispiel, wie ein Record in C# 9.0 definiert wird:
public record Person(string FirstName, string LastName);
Mit dieser einen Zeile Code haben wir einen unveränderlichen Datentyp erstellt, der automatisch Equals, GetHashCode, ToString und das Klonen implementiert.
Vorteile von Records
- Unveränderlichkeit: Da Records unveränderlich sind, sind sie sicherer und führen zu weniger Fehlern in der Codebasis.
- Eingebaute Implementierungen: Records bieten automatisch implementierte Methoden wie
Equals,GetHashCodeundToString, was die Entwicklungszeit verkürzt. - Deklarative Syntax: Die Syntax von Records ist kurz und prägnant, was den Code lesbarer macht.
Anwendung von Records
Beispiel: Verwendung in einer Anwendung
Nehmen wir an, wir haben eine Anwendung, die eine Liste von Personen verwaltet. Mit Records können wir diese Personen einfach und effektiv modellieren:
public record Person(string FirstName, string LastName);
var person1 = new Person("John", "Doe");
var person2 = new Person("Jane", "Doe");
// Verwendung von `with`-Ausdruck zum Erstellen einer Kopie mit geänderten Werten
var person3 = person1 with { FirstName = "Johnny" };
Console.WriteLine(person1); // Ausgabe: Person { FirstName = John, LastName = Doe }
Console.WriteLine(person3); // Ausgabe: Person { FirstName = Johnny, LastName = Doe }
In diesem Beispiel erstellen wir zwei Personen und verwenden den with-Ausdruck, um eine Kopie von person1 zu erstellen und den Vornamen zu ändern. Dies zeigt die Kraft und Flexibilität von Records.
Fazit
Für Datenträger ohne eigenes Verhalten, also DTOs, Konfigurationsobjekte oder Rückgabewerte, sind Records inzwischen meine Standardwahl. Für Klassen mit Identität und veränderlichem Zustand bleibt es bei class.
Für weitere Details und eine ausführliche Anleitung zu Records besuche die offizielle Microsoft-Dokumentation.
Alle Details zu Records stehen in der Sprachreferenz.