Инициализатор 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.