Qual é a diferença entre const
e readonly
em C#?
Quando você usaria um sobre o outro?
Isto explica tudo. Resumo: const deve ser inicializada no momento da declaração, somente leitura pode ser inicializada no construtor (e assim ter um valor diferente dependendo do construtor utilizado).
Veja Gishu's gotcha acima para a diferença sutil
Uma constante é uma constante de tempo de compilação, enquanto que a leitura apenas permite que um valor seja calculado em tempo de execução e definido no construtor ou no inicializador de campo. Assim, uma 'const' é sempre constante, mas 'readonly' é somente de leitura uma vez atribuída.
Eric Lippert da equipe C# tem mais informações sobre os diferentes tipos de imutabilidade