天天看點

static、const、readonly與static readonly的差別與聯系

1、const修飾符

初始化時機:編譯時,即編譯程式時将值已經嵌入代碼中;

值狀态:不允許動态修改

修飾範圍:字段、局部變量

主要應用場景:主要應用于程式運作中不需要改變的變量的值,比如數學符号pi;

2、static修飾符

初始化時機:運作時,可以聲明時指派,也可以在構造函數,或使用時指派

值狀态:允許修改

修飾範圍:類、字段、屬性、方法、運算符、事件、構造函數(不能用于索引器、析構函數或類以外的類型)

主要應用場景:主要作用于類的公共屬性

3、readonly修飾符

初始化時機:運作時,可以聲明時指派或在類中的構造函數中指派

值狀态:允許修改,但隻能在構造函數中修改

修飾範圍:字段

主要應用場景:主要作用于執行個體化的對象的隻讀屬性

4、static readonly修飾符

初始化時機:運作時,是兩個關鍵字的組合

值狀态:允許修改,聲明時指派或者靜态構造函數中指派

主要應用場景:第一,和const相比,它主要應用于引用性變量;而const,隻能用于string類型的引用性變量;第二,類的隻讀公共屬性