2010-06-17 6 views
1

Можно создать дубликат:
What is the difference between const and readonly?разница между ReadOnly и Const?

являются эти взаимозаменяемы? можете ли вы показать мне код о том, как вы примените эти два?

+1

Дубликат http://stackoverflow.com/questions/55984/what-is-the-difference-between-const-and-readonly –

+1

И http://stackoverflow.com/questions/755685/c-static- readonly-vs-const –

+1

И http://stackoverflow.com/questions/555534/when-if-ever-should-we-use-const –

ответ

2

Нет, они не являются.

A const Поле - это буквальное значение, встроенное в сборку.
Только примитивные значения (строки и цифры) могут быть const, и они оцениваются во время компиляции.
Когда вы ссылаетесь на поле const, компилятор вводит буквальное значение поля. Поэтому, если использование использует const из другой сборки, а другая сборка перекомпилируется с другим значением, ваша сборка будет использовать только новое значение, если вы перекомпилируете ее в новой версии.


readonly поле представляет собой нормальное поле, которое не может быть изменен вне конструктора.

+0

Почему это было приостановлено? – SLaks

+0

ask eric! он тот человек! –

+0

ответьте на этот вопрос: http://stackoverflow.com/questions/2624796/initialize-byte-array-from-a-portion-of-existing-byte-array-c –

2

Const не может выполнять оценки, тогда как readonly может при инициализации. (т. е. вы можете читать значение переменной readonly из файла конфигурации или на основе какого-либо другого параметра, который известен во время выполнения, константа может быть установлена ​​только на то, что известно во время компиляции)

0

Член любого типа может быть readonly. Это просто означает, что член не может быть переназначен после построения содержащего класса; то есть он не может быть установлен на новый объект с оператором =. Переменные классы, такие как коллекции, все еще могут быть изменены в отношении их членов; это просто, если у вас есть член readonly, который является коллекцией, он не может быть привязан к совершенно новой коллекции после построения.

const не так уж отличается от буквального (как 5): она представляет неизменного значения и, таким образом, только на самом деле имеет смысл в контексте задания значение (в отличие от объекта).

Смежные вопросы