Constant : constant is stored in module's metadata after compilation, so it cannot change at the runtime .
10 const int i = 9;
Note : Only primitive types(int,boolean,char etc ) can be Constants.Then the compiler takes const as literal(The value is hardcode in source code ) as shown below.
Fields: Are dynamic memory allocation, so value can be allocated at runtime only.
10 static readonly int i = 9;
Readonly – fields can be written only with in constructor method.
Note: No need to be primitive type and it support both static and non-static fields
Note : Any datatype the compiler directly supports are called primitive datatype .
E.g : in C# an int maps directly to a System.Int32