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.