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.
Approfondimenti
I più letti di oggi
- Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
- Sfruttare la local cache del browser tramite gli ETag in #aspnetcore https://aspit.co/cfc di @crad77 #webapi #aspnetmvc #blazor #cache
- Catturare la telemetria degli eventi di output cache in ASP.NET Core
- Taggare la output cache in base al routing in ASP.NET Core
- Effettuare l'upload di un file via FTP con la libreria FluentFTP di .NET