Il modificatore required
Obblighi i chiamanti a impostare le proprietà essenziali.
Il modificatore required è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Il modificatore required
Il modificatore required obbliga il codice chiamante a impostare una proprietà o un campo durante la creazione di un oggetto. Trasforma gli errori "è stato dimenticato un valore" da errori di runtime a errori di compilazione.
using System;
class Person {
public required string Name { get; init; }
}
var p = new Person { Name = "Ada" };
Console.WriteLine(p.Name); // AdaL'omissione di un membro required impedisce la compilazione
Se il codice chiamante omette un membro required, il compilatore segnala un errore prima ancora che il programma venga eseguito.
using System;
class Person {
public required string Name { get; init; }
}
// var bad = new Person { }; // compile error: Name is required
var good = new Person { Name = "Lin" };
Console.WriteLine(good.Name); // Linrequired con init
required si combina naturalmente con init: il valore deve essere fornito durante la costruzione e non può più essere modificato.
using System;
class Config {
public required string Url { get; init; }
public int Timeout { get; init; } = 30;
}
var c = new Config { Url = "https://api" };
Console.WriteLine(c.Url + " " + c.Timeout); // https://api 30required con set
È possibile rendere required anche una proprietà con accessor set. Deve essere inizializzata, ma può ancora essere modificata in seguito.
using System;
class Box {
public required int Size { get; set; }
}
var b = new Box { Size = 5 };
b.Size = 10; // still mutable
Console.WriteLine(b.Size); // 10Campi required
È possibile rendere required anche i campi, non solo le proprietà.
using System;
class Token {
public required string Value;
}
var t = new Token { Value = "abc123" };
Console.WriteLine(t.Value); // abc123Costruttori e required
Se un costruttore imposta un membro required, chi lo utilizza non deve più impostarlo quando usa quel costruttore. Usi [SetsRequiredMembers] per comunicarlo al compilatore.
using System;
using System.Diagnostics.CodeAnalysis;
class Person {
public required string Name { get; init; }
[SetsRequiredMembers]
public Person(string name) => Name = name;
}
Console.WriteLine(new Person("Sam").Name); // SamCombinare required e membri facoltativi
Solo i membri contrassegnati sono obbligatori; gli altri rimangono facoltativi e conservano i loro valori predefiniti.
using System;
class Account {
public required string Owner { get; init; }
public decimal Balance { get; init; } = 0m;
}
var a = new Account { Owner = "Kai" };
Console.WriteLine(a.Owner + " " + a.Balance); // Kai 0required nell'ereditarietà
I membri required vengono ereditati. Una classe derivata può aggiungere propri membri required, che dovranno essere tutti soddisfatti.
using System;
class Base { public required int Id { get; init; } }
class Item : Base { public required string Name { get; init; } }
var i = new Item { Id = 1, Name = "Pen" };
Console.WriteLine(i.Id + " " + i.Name); // 1 PenSostituire i costruttori complessi
required + init spesso sostituiscono i costruttori complessi: si ottengono membri obbligatori con la sintassi leggibile degli inizializzatori di oggetto.
using System;
class Email {
public required string To { get; init; }
public required string Subject { get; init; }
public string Body { get; init; } = "";
}
var e = new Email { To = "a@b.com", Subject = "Hi" };
Console.WriteLine(e.To + " | " + e.Subject); // a@b.com | HiIntento autoesplicativo
Contrassegnare i membri come required documenta quali valori sono essenziali e rende il tipo più semplice da usare correttamente.
using System;
class Registration {
public required string Username { get; init; }
public required string Password { get; init; }
public bool Newsletter { get; init; }
}
var r = new Registration { Username = "ada", Password = "x" };
Console.WriteLine(r.Username); // adaCombinare il tutto
Un tipo che combina membri obbligatori, facoltativi e convalidati.
using System;
class Server {
public required string Host { get; init; }
public int Port { get; init; } = 8080;
public string Address => Host + ":" + Port;
}
var s = new Server { Host = "localhost" };
Console.WriteLine(s.Address); // localhost:8080Verifica rapida
Verifichi cosa garantisce il modificatore required.
Riepilogo
Ha imparato a usare il modificatore required.
- Obbliga il codice chiamante a inizializzare il membro al momento della creazione; il controllo viene eseguito dal compilatore.
- Si combina con
initper ottenere membri obbligatori e immutabili. [SetsRequiredMembers]consente a un costruttore di soddisfare il requisito.- I membri required vengono ereditati.
Domande Frequenti
La lezione «Il modificatore required» è gratuita?
Sì — il testo completo di «Il modificatore required» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Il modificatore required»?
Obblighi i chiamanti a impostare le proprietà essenziali. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Il modificatore required»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Setter init-only
- Il modificatore required
- Pattern per oggetti immutabili
- Espressioni with sui record