required statt Konstruktor-Orgien

required statt Konstruktor-Orgien

- Matt

Ein Objekt mit acht Pflichtfeldern führte bisher entweder zu einem unübersichtlichen Konstruktor oder zu Objekten, die halb befüllt herumliegen. Seit C# 11:

public class Rechnung
{
    public required string Nummer { get; init; }
    public required DateOnly Datum { get; init; }
    public string? Bemerkung { get; init; }
}

var r = new Rechnung { Nummer = "R-1001", Datum = today };

Fehlt eine der markierten Eigenschaften, meldet das der Compiler. Zusammen mit init bekommt man Objekte, die vollständig erzeugt und danach unveränderlich sind, ohne einen einzigen Konstruktor zu schreiben.