2016-02-27 50 views
0

因此,在自動實現和屬性初始化的可用性之後,我是否甚至需要一個屬性字段?如果我有一個物業,我還需要一個領域?

這似乎更清潔:

class A { 
public int X { 
     get;set; 
    } = 1; 
} 

比這

class A { 
    int x = 1; 
    public int X { 
     get { 
      return x; 
     } 
     set { 
      x = value; 
     } 
    } 
} 
+1

https://msdn.microsoft.com/en-us/library/bb384054.aspx – Steve

回答

3

在第一種情況下,編譯器已被讀取y提供一個後臺字段 - 它只是隱含的(並且它給出了一個你不能在代碼中引用的名字)。請注意,已將作爲生成代碼中的後臺字段,因爲屬性本​​身實際上只是一對方法,其中有一些元數據鏈接它們 - 屬性的存在不會將任何狀態添加到對象。狀態是只有存儲在字段中。

它甚至吸塵器在一行寫的時候 - 我通常會認爲這是:

class A 
{ 
    public int X { get; set; } = 1; 
} 
1

你不需要在這種情況下支持字段,但如果你要處理的財產具有例如OnPropertyChanged()那麼你需要有一個後盾字段

public int X { 
    get { 
     return x; 
    } 
    set {   
     x = value; 
     OnPropertyChanged() 
    } 
} 
相關問題