Каква е разликата между const и readonly и за какво се ползват?

+3 гласа
120 прегледа
попитан 2016 април 26 в Обща дискусия от Suzana.Velcheva. (1,250 точки)

Каква е разликата между двете и съответно за какво се ползва едното и другото? 

1 отговор

+1 глас
отговорени 2016 април 26 от valeri.hristov (7,340 точки)
избран 2016 май 3 от Mitko Vasilev
 
Най-добър отговор
Общото между двете е, че с веднъж зададена стойност, тя повече не може да се промени по време на изпълнението. Има няколко разлики.

-Константите са винаги статични и са общи за целия клас, докато readonly могат да са различни за всяка инстанция, но могат и да са статични.

- Стойността на константата се записва в кода и по време на компилацията навсякъде, където е използвана тази константа, тя се замества със съответната стойност. Readonly от друга страна може да получи стойността си докато програмата върви (например когато не знаеш каква точно ще е стойността и очакваш да я получиш в последствие).

- Стойността на readonly може да се запише в кода и в последствие да се промени само в конструктура на този клас.

Относно това къде могат да се използват. Представи си, че правиш игра. Докато успееш да нагласиш точната скорост, с която да се движат обектите(да не е твърде бързо или много бавно) ще трябва да опитваш много. Ако използваш директно числа, дали ще е приятно при всяка промяна да обикаляш на 10 места из кода и всяко едно число да го променяш?А ако са 100 места? Твърде е възможно да пропуснеш някое място и всичко да се обърка. Тук на помощ идва константата. Вместо числа, използваш нея и когато се наложи промяна ти променяш само на 1 място, другото го върши компилатора.
...