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

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

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

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

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