2017-08-09 35 views
1

由於該屬性不支持set,因此我期待在編譯時轉至this.GetProp失敗。這段代碼編譯得很好,VS2015 & NET461。自動實現的屬性是否有隱含的集合?

public class Example 
{ 
    public Example(string val) 
    { 
     this.GetProp = val; 
     this.GetSetProp = val; 
    } 

    public string GetProp { get; } 
    public string GetSetProp { get; set; } 
} 

在自動屬性中是否隱含對後臺字段的私有訪問?

+12

你可以在構造函數中設置屬性值,即使它消氣而已,就像你可以分配給'readonly'變量 –

回答

3

這是C#6.0中新引入的功能。見C#6.0語言規範,部分10.7.3自動實現的屬性

如果自動屬性沒有set訪問,支持字段是 只讀考慮(§10.5.2)。就像readonly字段一樣,在封閉類的 構造函數的主體中也可以分配 獲取者專用自動屬性。這種分配直接將 分配給屬性的只讀後臺字段。

(重點煤礦)

+3

從正確回答問題,一個壞的副本(見式兩份) –

+0

@CamiloTerevinto其他的答案做甚至沒有引用官方規格 – Adrian

+1

@Adrian你是對的,我已經更新了我對另一個問題的回答 – tomRedox

2

這是在C#6中引入一個getter,僅自動屬性的支持字段是隱式聲明爲readonly,因此你可以在構造函數中設置它。

相關問題