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);//會發生錯誤