const инициализируются во время компиляции, остальные во время выполнения: статические во время вызова класса, остальные поля (не статические) во время создания экземпляра.
Вопрос: почему const инициализируются во время компиляции? Они статичны, почему им нельзя присвоить значение в статическом конструкторе?
Как это вообще происходит?
если константы инициализированы, то необходимо обратиться к классу, чтобы понять, что внутри него в принципе существуют const и прочитать их значения, а значит static тоже должен был быть проработан и инициализирован, как и статический конструктор. Но видимо этого не происходит, поэтому и нет ссылки на класс? Тогда как считываются значения const и почему мы не можем получить к ним доступ без обращения к классу?
Например: Console.WriteLine(MyClass.PI)?
Почему мы не можем: Console. WriteLine(PI)? Потому что неизвестно, где находится ПИ. Тогда как же компилятору, не зная, где находится PI и что он в принципе существует, ввести значение на этапе компиляции, не обращаясь к классу?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -initializ
Почему константу нельзя инициализировать в статическом конструкторе? Почему const инициализируется именно во время компи ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение