2016-02-27 108 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() 
    } 
} 
相关问题