const Vs readonly

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 Vs readonly
const,
  • They Can not be static
  • The value of constant is evaluated at compile time
  • constants are initiailized 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 
----------------------------------------------------------------------------

Additionally want to know this: Garbage Collection