Records

Records sind gut geeignet für Situation wo wir Value Equality benötigen, z.B. für DTOs. Ein Record ist jedoch ein Referenztyp.

public record LoginRequest(
    string Email,
    string Password);
    
LoginRequest request = new LoginRequest("[email protected]", "passwort");

Bei einem Record müssen wir also keine Properties definieren. Sie werden automatisch aus dem Konstruktor generiert. Die Properties sind jedoch nur init-Only.

Ausserdem können wir mit dem Record direkt auf Value Equality prüfen, ohne die Equality()- und GetHashCode()-Methode zu überschreiben.

with

Mit dem with-Keyword können wir einen neuen Record aus einem alten erstellen und darin etwas übereschreiben.

LoginRequest updatedRequest = request with { Password = "12345678" };

Deconstruction

Wir können Records in seine Properties dekonstruieren.

var (email, password) = request;

Die Records werden nach Reihenfolge dekonstruiert.

Zuletzt aktualisiert

War das hilfreich?