It is a compile-time constant. A field or local variable which is
declared as constant can be initialized with a constant expression
which must be fully evaluated at compile time.
constint x = 10;
constint y = 20;
constint z = x + y;
Console.WriteLine("The value of x :" + x);
Console.WriteLine("The value of y :" + y);
Console.WriteLine("The value of z :" + z);
int a = 15;
constint b = x + a;
Console.WriteLine("The value of b :" + b);
//The variable 'a' is assigned but its value is never used
You can mark Constants as public, private, protected, internal, or protected internal access modifiers.
When to use
If you think that the value of field or local variable is never changed.
It is same as Constant but it is run time constant. I mean to say that a
ReadOnly field or local variable can be initialized either at the time
of declaration or inside the constructor of same class. That is why we
called it run time constant.
readonlyint x = 10;
//changed the value in constructor
x = 20;
As you know that we cannot declare Constant as static but we can do it
for readonly explicitly. By default it is not static. It can be applied
to value type and reference type [which initialized by using the new
keyword)] both and also with delegate and event
When to use
If you think, you need to change the value of variable or field at run
time inside the calling constructor, then you need to use the readonly