readonly und const
Es gibt einige offensichtliche Unterschiede zwischen readonly und const:
- const Felder sind automatisch statisch, readonly-Felder nicht.
- const Felder sind nur über einen Feldinitialisierer einzurichten, readonly-Felder zusätzlich auch in einem Konstruktor.
Darüber hinaus gibt es aber noch einen unscheinbaren, aber enorm wichtigen Unterschied:
- const wird zur Übersetzungszeit ausgewertet, readonly zur Laufzeit.
Sobald ein Projekt aus mehreren Assemblies besteht, macht die Verwendung der beiden Varianten also einen drastischen Unterschied: Wird der Wert eines const Felds geändert, müssen alle abhängigen Assemblies ebenfalls neu übersetzt werden, damit der neue Wert dort greift — bei readonly entfällt dieser Schritt.