Was ist der Unterschied zwischen const
und readonly
in C#?
Wann würden Sie das eine dem anderen vorziehen?
Dies erklärt es. Zusammenfassung: const muss bei der Deklaration initialisiert werden, readonly kann im Konstruktor initialisiert werden (und damit je nach verwendetem Konstruktor einen anderen Wert haben).
EDIT: Siehe Gishu' s gotcha oben für den subtilen Unterschied
Eine const ist eine Konstante zur Kompilierzeit, während readonly es ermöglicht, einen Wert zur Laufzeit zu berechnen und im Konstruktor oder Feldinitialisierer zu setzen. Eine 'const' ist also immer konstant, aber 'readonly' ist nur lesbar, sobald sie zugewiesen ist.
Eric Lippert vom C#-Team bietet weitere Informationen zu den verschiedenen Arten der Unveränderlichkeit
Ich glaube, ein "const"-Wert ist für alle Objekte gleich (und muss mit einem literalen Ausdruck initialisiert werden), während "readonly" bei jeder Instanziierung anders sein kann...