Ключевым отличием является то, что Const является эквивалентом C #DEFINE. Число буквально подставляется а-ля прекомпилятором. Readonly фактически рассматривается как переменная.
Это различие особенно актуально, когда у вас есть проект А в зависимости от публичной константы из проекта Б. Предположим, что публичная константа изменяется. Теперь ваш выбор const / readonly повлияет на поведение в проекте A:
Const: проект A не перехватывает новое значение (если, конечно, оно не перекомпилируется с новым const), потому что оно было скомпилировано с подстановочными константами в.
ReadOnly: проект A всегда будет запрашивать значение переменной у проекта B, поэтому он получит новое значение публичной константы в B.
Честно говоря, я бы порекомендовал вам использовать readonly почти для всего, кроме действительно универсальных констант (например, Pi, Inches_To_Centimeters). Для всего, что может измениться, я использую readonly.
Надеюсь, это поможет,
Алан.