readonly與常數用法很像, 相較於常數,readonly通常會用在class流程設計 readonly 在建構子指派值之後,就不能更改

readonly可以在建構子裡面修改

class Hello
{
    private readonly int _year = 2012;
    public Hello()
    {
            //在建構子裡面可以變更readonly值
        _year = 2020;
    }
    public void Call()
    {
        Console.WriteLine(_year);
    }
}
static void Main(string[] args)
{
    Hello x = new Hello();
    x.Call();//2020
}

readonly不須提供初始值 readonly可以先定義狀態、在建構子中在賦予值。 但是常數則一定要在第一次就提供初始值

readonly string x;//readonly可以先定義狀態,再賦予值
const string y;//常數,沒有賦予值會發生錯誤

readonly可以存取計算後的結果 readonly可以存取計算值 常數則不行

readonly double _n = Math.Sin(60);
const double X = Math.Sin(60);//會發生錯誤