Постоянный и ReadOnly
Важно понять концепции программирования на C #, прежде чем приступать к реализации кода. Прежде чем перейти к различиям между константой и readonly, давайте сначала разобраться в ключевых словах и как они используются в программе. Оба являются наиболее распространенными ключевыми словами, используемыми в программировании на C # и в основном для той же цели. Однако оба ключевых слова сильно отличаются друг от друга. Const является зарезервированным словом, используемым для представления постоянных значений, и указывает, что значение не может быть изменено после времени компиляции, тогда как readonly является модификатором, который может использоваться в полях и значение которого может быть изменено во время выполнения. Давайте рассмотрим некоторые ключевые отличия между константой и readonly.
Что такое Const?
Const ссылается на постоянную переменную, значение которой необходимо назначать только один раз, во время объявления. Когда ключевое слово const используется во время объявления, оно становится постоянным, что означает, что значение остается постоянным и не может быть изменено во всей программе. Это скорее зарезервированное слово, которое указывает, что значение не должно изменяться после компиляции. По умолчанию константа неявно статична, поэтому ее можно вызвать с именем класса, используя «Classname.VariableName». Константные значения также называются литералами. Он может быть любого базового типа данных, такого как целочисленный const, плавающий const или строковый литерал.
Что такое ReadOnly?
Ключевое слово Readonly - это модификатор, который может использоваться только для полей, но не для локальных переменных. Поле readonly может быть инициализировано либо во время объявления, либо внутри конструктора в том же классе, поэтому значения могут отличаться для разных исполнений программы в зависимости от используемого конструктора. Ключевое слово readonly указывает, что переменная экземпляра объекта не модифицируется, и любая попытка изменить ее после объявления приводит к ошибке компиляции. Переменная не становится немодифицируемой до выполнения. Переменные производятся только для чтения только для того, чтобы перестать вызывать код от случайного изменения его после его создания.
Разница между константой и ReadOnly
Константное (const) ключевое слово - это не что иное, как неизменяемые переменные, значение которых может быть инициализировано только во время компиляции. Эти постоянные значения также называются литералами. Это просто позволяет нам указать, является ли переменная изменчивой или нет. Простыми терминами константы неявно статичны, и они должны быть инициализированы до того, как они будут использоваться в программе. С другой стороны, ключевое слово Readonly является модификатором, который можно использовать в полях и значение которого можно изменить во время выполнения. Это предотвращает изменение полей и значения которых могут быть заданы через контрольные переменные.
Константа по умолчанию статична, а значения для которой должны быть назначены во время объявления переменной, означают, что значения присваиваются только во время компиляции. Константа объявляется с использованием ключевого слова «const». Инициализация константного поля должна быть постоянным выражением и не может быть изменена. Проще говоря, const является константой времени компиляции. С другой стороны, поле readonly может быть инициализировано только на уровне класса, не входящем в метод, и после инициализации поле не может быть изменено. Другими словами, переменные readonly могут быть инициализированы во время объявления или внутри конструктора.
Значение const вводится непосредственно в код, поскольку оно действует как замена времени компиляции. Компилятор помещает постоянное значение в метаданные сборки, которые определяют константу и вставляет значение в код IL после инициализации, поэтому для констант во время выполнения для выделения не требуется память. Значение Readonly не является постоянным и хранится в кучке загрузчика, память которого не может быть выделена до тех пор, пока не будет загружен его тип. Поля readonly хранятся в динамической памяти, поэтому значения могут быть получены только во время выполнения.
Хотя оба ключевых слова используются почти для одной и той же цели, у них есть разные семантики семантики двоичного кода. Когда выражение ссылается на константу, компилятор вводит значение во время компиляции. Поэтому, если значение используется в другой сборке, исходная сборка должна быть обновлена, а значение должно быть изменено. Изменения в сборке не отражаются до момента перекомпиляции. Значение не получается до времени выполнения, когда выражение ссылается на поле только для чтения. Если значение изменяется в другой сборке, изменения отражаются в сборке, как только она загружается без перекомпиляции.
Const vs. Readonly: Сравнительная таблица
Резюме Const vs. Readonly
Оба ключевых слова используются для того же, что и для объявления члена, так что значения не могут быть изменены во всей программе. Однако ключевое слово const сильно отличается от ключевого слова readonly. Const - это постоянная переменная, значение которой должно быть инициализировано во время компиляции, тогда как поле readonly может быть инициализировано только на уровне класса либо во время объявления, либо внутри конструктора. Const - постоянная времени компиляции, тогда как поля readonly доступны только для чтения. Константные переменные могут быть доступны с помощью «Classname.VariableName», в то время как переменные readonly могут быть доступны с помощью «InstanceName.VariableName».Более того, константные переменные могут быть объявлены в методах, тогда как поля readonly не могут быть объявлены в методах.