【C# 6.0】唯讀 Auto 屬性

介紹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 存取子才能存取。

簡單來說,本來要製作出GetSet功能,分別讓外部可以設定值,讓外部可以取得值,直接簡化成:

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