Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему нельзя использовать init со static

Август Сентябрь Знаток (331), на голосовании 1 месяц назад
Иначе говоря, почему метод доступа "init" не может использоваться для статических элементов?

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

Статические члены принадлежат классу, а не его экземпляру. Они существуют в единственном экземпляре и доступны без создания объекта класса. Поэтому использование метода init со статическими членами не имеет смысла.
Август СентябрьЗнаток (331) 2 месяца назад
т.е. init только для экземпляров работает?
Bloody Slave Гуру (3424) Август Сентябрь, да
Koshkina Гуру (3593) 2 месяца назад
Метод доступа предназначен для инициализации свойств экземпляра объекта во время его создания. Он позволяет установить значение свойства только в момент инициализации объекта, обеспечивая неизменяемость после этого. Поскольку статические члены принадлежат классу в целом, а не конкретному экземпляру, использование init для них не имеет смысла. Статические члены могут быть изменены в любое время, и их инициализация обычно происходит в статическом конструкторе или при объявлении. Поэтому компилятор запрещает использование init для статических свойств.
Похожие вопросы