0Pricing
C# Academy · Lezione

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); // Ada

L'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); // Lin

required 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 30

required 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); // 10

Campi 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); // abc123

Costruttori 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); // Sam

Combinare 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 0

required 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 Pen

Sostituire 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 | Hi

Intento 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); // ada

Combinare 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:8080

Verifica 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 init per 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

  1. Setter init-only
  2. Il modificatore required
  3. Pattern per oggetti immutabili
  4. Espressioni with sui record
← Torna a C# Academy