C# 11 introduce la nuova parola chiave required che possiamo anteporre davanti a proprietà e campi di una classe per specificare che questi devono obbligatoriamente essere inizializzati da un costruttore o da un object initializer. Grazie a questa funzionalità, i campi obbligatori di una classe non possono non essere inizializzati sia che si utilizzi un costruttore sia che si utilizzi un object initializer.
I costruttori che inizializzano tutti i membri marcati con required devono essere marcati con l'attributo SetsRequiredMembers. Questo perché se una classe ha più costruttori, e non tutti inizializzano i membri obbligatori, il compilatore potrà generare un'eccezione quando questi vengono usati e non si usa un object initializer per i campi obbligatori mancanti.
public class Person { public Person() { } [SetsRequiredMembers] public Person(string firstName, string lastName) { FirstName = firstName; LastName = lastName; } public required string FirstName { get; init; } public required string LastName { get; init; } public int? Age { get; set; } } var p1 = new Person("Stefano", "Mostarda"); // Ok var p2 = new Person() { FirstName = firstName, LastName = lastName }; // Ok var p3 = new Person(); //Ko
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.