С# разница между readonly и const полями


#1

В чём состоит разница между readonly и const полями? они оба являются неизменяемыми и разницы в их работе я не заметил (может я что-то упускаю...)


#2

Первая разница между ними состоит в том, что readonly полям можно присваивать значения в двух местах: в месте их создания и в конструкторах. Для констант же значения можно присвоить только в месте их создания.

Вторая разница состоит в том, что поля readonly - это "особые" переменные, поскольку в отличные от обычных переменных их значения можно изменить только в определённых местах (было описано выше), но после компиляции они всё так же остаются переменными, в отличии от констант. Ведь при компиляции во все места кода где использовалась константа будет подставлено её значение, а в самом классе её уже не будет (посмотрите тут, если нужен пример)


#3

спасибо!