C# › Modern C# Features (Global Usings, File-Scoped Namespaces, Top-Level Statements)
How do required members (C# 11's 'required' keyword) enforce that certain properties MUST be set during object initialization?
IntermediateAnswer
Marking a property 'required' forces callers to set it via OBJECT INITIALIZER syntax (or a constructor annotated with [SetsRequiredMembers]) — the compiler raises an error if a required property is left unset when constructing an instance, catching a whole class of 'forgot to set a mandatory field' bugs at compile time instead of leaving a property at its unintended default value.
public class User {
public required string Email { get; set; }
public string? Name { get; set; }
}
var user = new User { Email = "sam@x.com" }; // OK, Email is set
// var bad = new User(); // Error: required member 'Email' must be setReal-world example Guaranteeing a DTO or domain object's mandatory fields (like Email or Id) can never be accidentally left unset.