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(); //KoCommenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.


