C# 9.0: Einführung in Records

C# 9.0: Einführung in Records

18 Aug 2020 - Matthias Voigt

Mit der Einführung von C# 9.0 hat Microsoft eine der spannendsten neuen Features der Sprache vorgestellt: Records. Diese neue Art von Datentyp ermöglicht es, unveränderliche Objekte auf einfache und deklarative Weise zu erstellen. In diesem Artikel werden wir einen genaueren Blick auf Records werfen und ihre Vorteile sowie die Anwendung in der Praxis erläutern.

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

  1. Unveränderlichkeit: Da Records unveränderlich sind, sind sie sicherer und führen zu weniger Fehlern in der Codebasis.
  2. Eingebaute Implementierungen: Records bieten automatisch implementierte Methoden wie Equals, GetHashCode und ToString, was die Entwicklungszeit verkürzt.
  3. 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

Records sind eine großartige Ergänzung zu C# 9.0 und bieten Entwicklern eine einfache Möglichkeit, unveränderliche Datenmodelle zu erstellen. Sie verbessern die Codequalität, indem sie Unveränderlichkeit und weniger Boilerplate-Code fördern. Es lohnt sich, diese neuen Features in zukünftigen Projekten zu nutzen und zu erkunden.

Für weitere Details und eine ausführliche Anleitung zu Records besuche die offizielle Microsoft-Dokumentation.