init (riferimenti per C#)init (C# Reference)

In C# 9 e versioni successive, la init parola chiave definisce un metodo della funzione di accesso in una proprietà o un indicizzatore.In C# 9 and later, the init keyword defines an accessor method in a property or indexer. Un setter solo Init assegna un valore alla proprietà o all'elemento Indexer solo durante la costruzione dell'oggetto.An init-only setter assigns a value to the property or the indexer element only during object construction. Per altre informazioni ed esempi, vedere Proprietà, Proprietà implementate automaticamente e Indicizzatori.For more information and examples, see Properties, Auto-Implemented Properties, and Indexers.

Nell'esempio seguente vengono definite sia una funzione di accesso sia una get init funzione di accesso per una proprietà denominata Seconds .The following example defines both a get and an init accessor for a property named Seconds. Usa il campo privato denominato _seconds per portare in secondo piano il valore della proprietà.It uses a private field named _seconds to back the property value.

class InitExample
{
     private double _seconds;

     public double Seconds
     {
         get { return _seconds; }
         init { _seconds = value; }
     }
}

Spesso la funzione di accesso init è costituita da una singola istruzione che assegna un valore, come nell'esempio precedente.Often, the init accessor consists of a single statement that assigns a value, as it did in the previous example. È possibile implementare la init funzione di accesso come membro con corpo di espressione.You can implement the init accessor as an expression-bodied member. L'esempio seguente implementa entrambe le funzioni di accesso get e init come membri con corpo di espressione.The following example implements both the get and the init accessors as expression-bodied members.

class InitExampleExpressionBodied
{
    private double _seconds;

    public double Seconds
    {
        get => _seconds;
        init => _seconds = value;
    }
}

Per i casi semplici in cui le funzioni di accesso get e init di una proprietà non eseguono operazioni diverse dall'impostazione o recupero di un valore in un campo sottostante, è possibile sfruttare il supporto del compilatore C# per le proprietà implementate automaticamente.For simple cases in which a property's get and init accessors perform no other operation than setting or retrieving a value in a private backing field, you can take advantage of the C# compiler's support for auto-implemented properties. L'esempio seguente implementa Hours come una proprietà implementata automaticamente.The following example implements Hours as an auto-implemented property.

class InitExampleAutoProperty
{
    public double Hours { get; init; }
}

Specifiche del linguaggio C#C# language specification

Per ulteriori informazioni, vedere la specifica del linguaggio C#.For more information, see the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedi ancheSee also