Kennzeichnet ein Feld oder eine lokale Variable als konstant, das heißt, dass der Wert des
Feldes oder der lokalen Variable nach der Definition nicht mehr geändert werden kann.
Da der Ausdruck, welcher einer Konstanten zugewiesen werden soll, zum Zeitpunkt der
Kompilierung ausgewertet und als ausgewerteter Ausdruck in die Assembly geschrieben wird,
muss er zu diesem Zeitpunkt auswertbar sein. Daher können mit Ausnahme von
string
und
null Verweistypen nicht als konstant definiert werden.
Wird ein Element als konstant definiert, kann es nicht mit dem Schlüsselwort
static gekennzeichnet werden.
Im Gegensatz zu
readonly kann einem Element, das mit dem
Schlüsselwort const gekennzeichnet wurde, nur bei der Definition ein Wert zugewiesen
werden. Bei
readonly ist das auch noch im Konstruktor möglich.
const definiert also eine Konstante zur Übersetzungszeit,
readonly
eine Konstante zur Laufzeit.