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.

Stackoverflow: const versus readonly