NikFaraday
@NikFaraday
Student full-stack Developer

Как работают статические поля в C#?

Здравствуйте!
Изучаю C# достаточно давно, но столкнулся на собеседовании с вопросом, ответ на который не могу найти вообще нигде в интернете

Как работают статические переменные в C# и в .NET в общем
В чём разница между const и readonly полями

Как это вообще выглядит на этапе компиляции?

P.S. Знаю лишь то, что это как-то связанно с мета таблицами, но больше вообще не имею понятия
Дайте пожалуйста четкий ответ
Спасибо большое на перёд!
  • Вопрос задан
  • 357 просмотров
Решения вопроса 1
Casper-SC
@Casper-SC
Программист (.NET)
Константа вычисляется статически на этапе компиляции. Константы подставляются в виде литералов в места использования этих констант. Если создать отдельную сборку только для констант, сослаться на эту сборку из основного проекта, собрать проект, то эту сборку можно будет удалить и всё будет работать, так как в основном проекте не будет ссылок на классы этой сборки, все константы будут подставлены в виде литералов. Так же изменение в сборке с константами потребует пересобрать сборку, которая использует константы.
Здесь наглядный пример.

readonly поле - это поле только для чтения, которое можно задать в конструкторе типа, в котором оно определено или в месте объявления поля. Если поле помечено модификатором static, то его значение можно задать только в статическом конструкторе типа, в котором оно определено или в месте объявления поля.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
insighter
@insighter
-First time? - Huh? (C#, React, JS)
У вас, что dial-up интернет или паталогическая лень? :))

1. Значения констант применимы только на этапе компиляции сборки.
2. Любые статические поля класса доступны (конечно, если позволяет видимость) всегда
3. Любые не статические поля класса доступны после создании экземпляра класса

https://ru.stackoverflow.com/questions/651231/c-%D...

В чём польза readonly полей в C#?
https://metanit.com/sharp/tutorial/3.3.php
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
const - постоянное неизменяемое поле
readonly - Только для чтения, значение можно присвоить только в конструкторе
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы