Constant and readonly difference and practical implementation?
Constant and readonly difference and practical implementation?
A constant member is defined at compile time and cannot be changed at runtime. Constants are declared as a field, using the const keyword and must be initialized as they are declared.
public class MyClass
{
public const double PI1 = 3.14159;
}
A readonly member is like a constant in that it represents an unchanging value. The difference is that a readonly member can be initialized at runtime, in a constructor, as well being able to be initialized as they are declared.
public class MyClass1
{
public readonly double PI2 = 3.14159;
//or
public readonly double PI3;
public MyClass2()
{
PI3 = 3.14159;
}
}
const
They cannot be declared as static (they are implicitly static)
The value of constant is evaluated at compile time
constants are initialized at declaration only
readonly
They can be either instance-level or static
The value is evaluated at run time
readonly can be initialized in declaration or by code in the constructor