2011-10-03 62 views
0

的可能重复:
C#: Public Fields versus Automatic Properties公共变量 - 需要的属性C#

我读的声明或用于提供私有成员的访问别人在C#中的属性。在这种情况下,当我们宣布公开成员时,我们是否还需要为他们申报财产。

在下面的示例中,它们为公共成员声明了属性。我不知道为什么?

class Customer 
{ 
    public double TotalPurchases { get; set; } 
    public string Name { get; set; } 
    public int CustomerID { get; set; } 
} 

谢谢!

+0

很多受骗者的。请在发布之前下次搜索! – Joe

回答

1

使用属性而不是公共字段允许在下一个版本中实现这些属性的非重大更改 - 公共字段的任何更改都将中断。

例如,您可以更改TotalPurchases的实现来执行计算,而不是直接返回后台字段的值。从班级消费者的角度来看,这种变化不会中断,不会影响应用程序的工作方式。

public double TotalPurchases 
{ 
    get 
    { 
    return CalculatePurchases(); 
    } 
} 
+1

+1该属性后面的代码*可以更改(使用自定义私人支持域或其他)。但是,将公共成员变量更改为属性是ABI(应用程序二进制接口)中的重大更改*。 – 2011-10-03 22:16:35

0

因此,首先,C#中的属性由于多种原因而被声明,并且不是私有的。

可以,例如,使吸气公众和私人二传手:

public double TotalPurchases 
{ 
    get; 
    private set; 
} 

此外,对于一些框架后盾反映,他们会寻找性质,而不是领域。 在这种情况下,属性是必须的,即使在getter/setter中没有任何操作时它看起来没有用处。