Here's another linkHere's another link demonstrating how const isn't version safe, or relevant for reference types.
Summary:
- The value of your const property is set at compile time and can't change at runtime
- Const can't be marked as static - the keyword denotes they are static, unlike readonly fields which can.
- Const can't be anything except value (primitive) types
- The readonly keyword marks the field as unchangeable. However the property can be changed inside the constructor of the class
- The readonly only keyword can also be combined with static to make it act in the same way as a const (atleast on the surface). There is a marked difference when you look at the IL between the two
- const fields are marked as "literal" in IL while readonly is "initonly"