init (справочник по C#)

В C# 9 и более поздних версий ключевое слово init определяет метод доступа в свойстве или индексаторе. Метод задания только для инициализации присваивает значение свойству или элементу индексатора только во время создания объекта. Дополнительные сведения и примеры см. в разделах Свойства, Автоматически реализуемые свойства и Индексаторы.

В приведенном ниже примере определен как метод доступа get, так и метод доступа init для свойства с именем Seconds. Для возвращения значения свойства в нем используется закрытое поле с именем _seconds.

class InitExample
{
     private double _seconds;

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

Метод доступа init часто состоит из одного оператора, который присваивает значение, как в предыдущем примере. Метод доступа init можно реализовывать как элемент, воплощающий выражение. В приведенном ниже примере методы доступа get и init реализуются как члены, воплощающие выражение.

class InitExampleExpressionBodied
{
    private double _seconds;

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

В простых случаях, когда методы доступа get и init свойства не выполняют никаких иных операций, кроме задания или извлечения значения в закрытом поле, можно использовать поддержку автоматически реализуемых свойств в компиляторе C#. В приведенном ниже примере Hours реализуется как автоматически реализуемое свойство.

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

Спецификация языка C#

Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также