Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1093 of 1492 menu
◀ ▶

Инициализатор init

В свойстве вместо set можно указать init: значение задают при конструировании - в конструкторе или в инициализаторе объекта после new. После создания экземпляра присвоение свойству с init не компилируется. Так делают неизменяемые после создания модели данных.

Синтаксис

тип Имя { get; init; } var obj = new Класс { Имя = значение };

Пример

Давайте зададим init свойство через инициализатор объекта:

using System; class Token { public string Code { get; init; } } class Program { static void Main() { var token = new Token { Code = "12345" }; Console.WriteLine(token.Code); } }

Результат выполнения кода:

"12345"

Пример

Давайте присвоим init свойство в конструкторе:

using System; class Page { public int Number { get; init; } public Page(int number) { Number = number; } } class Program { static void Main() { var page = new Page(3); Console.WriteLine(page.Number); } }

Результат выполнения кода:

3

Пример

Повторная запись в init свойство после создания объекта не компилируется:

class Token { public string Code { get; init; } } class Program { static void Main() { var token = new Token { Code = "12345" }; token.Code = "abcde"; } }

Компилятор сообщит, что свойство можно инициализировать только в init.

Смотрите также

  • свойство с get и set,
    которое можно менять в любой момент
  • модификатор required,
    который обязывает задать свойство при создании
  • оператор new,
    который создаёт экземпляр для инициализации
  • ключевое слово record,
    которое часто сочетают с init
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить