介紹C# 6.0新功能-「唯讀 Auto 屬性會啟用唯讀類型」介紹,如何使用。
C# 6.0發表時間:2015年7月,始於.NET Framework 4.6,Visual Studio 2015。
在C# 6.0中,Auto屬性增加兩個特性:
- 唯讀 Auto 屬性
- Auto 屬性初始設定式
首先是何謂「Auto屬性」,這是C# 3.0的產品,編譯器會建立私用、匿名的支援欄位,但只能透過屬性的get
和 set
存取子才能存取。
簡單來說,本來要製作出Get
和Set
功能,分別讓外部可以設定值,讓外部可以取得值,直接簡化成:
public string FirstName { get; set; }
而在C# 6.0版本,更把設定值的方式簡化,並增加唯讀功能。
- Auto 屬性初始設定式
這個概念就比較簡單,就是讓預設值可以更容易的設定。這個語法糖很簡單,直接以實際例子來說:
public string FirstName { get; set; } = "Jane";
直接在我們屬性式後面加上 = "Jane"
,即可設定預設值。
- 唯讀 Auto 屬性:
把原本的public string FirstName { get; set; }
set變成private,不讓外部輕易改變,所以會成為:
public string FirstName { get; private set; }
而這樣的屬性,雖然是不公開,但是仍可以根據string
的功能讓FirstName
改變大小寫,也就是調用string
的功能。
但是如果變成:
public string FirstName { get; }
這樣設定後,會幫FirstName
加上唯讀的屬性,使這FirstName
的值不被改變,僅能在初始時設定其值。因此如果使用string
功能的話,在編譯時段就會發生:
error CS0200: Property or indexer 'Person.FirstName' cannot be assigned to -- it is read only
這也就是:「無法指派屬性或索引子 'property' -- 其為唯讀」錯誤(CS0200)。
解法:加上set,或是不要修改其值
~Copyright by Eyelash500~
IT技術文章:EY*研究院
iT邦幫忙:eyelash*睫毛
Blog:睫毛*Relax
Facebook:睫毛*Relax