Bloody Slave
Гуру
(3409)
1 месяц назад
В C# метод init используется для инициализации объектов, созданных с использованием ключевого слова new.
Статические члены принадлежат классу, а не его экземпляру. Они существуют в единственном экземпляре и доступны без создания объекта класса. Поэтому использование метода init со статическими членами не имеет смысла.
Koshkina
Гуру
(3497)
1 месяц назад
Метод доступа предназначен для инициализации свойств экземпляра объекта во время его создания. Он позволяет установить значение свойства только в момент инициализации объекта, обеспечивая неизменяемость после этого. Поскольку статические члены принадлежат классу в целом, а не конкретному экземпляру, использование init для них не имеет смысла. Статические члены могут быть изменены в любое время, и их инициализация обычно происходит в статическом конструкторе или при объявлении. Поэтому компилятор запрещает использование init для статических свойств.
Например, здесь:
public static int B
{
get { return b; }
init { b = value;}
}
Почему компилятор запрещает использовать init?