公共变量 - 需要属性C#

时间:2011-10-03 22:11:02

标签: c# properties

  

可能重复:
  C#: Public Fields versus Automatic Properties

我读取C#中的属性被声明或用于提供私人成员对其他人的访问。在这种情况下,当我们宣布公共成员时,我们仍然必须为它们声明属性。

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

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

本文为您提供了有关属性及其过度使用的概述 http://www.codinghorror.com/blog/2006/08/properties-vs-public-variables.html

答案 2 :(得分:0)

首先,C#中的属性是出于多种原因而声明的,而不是私有属性。

例如,您可以将getter设为public,将setter设为私有:

public double TotalPurchases 
{
   get; 
   private set;  
}

此外,对于一些由反射支持的框架,它们会查找属性而不是字段。 在这种情况下,属性是必须的,即使在getter / setter中没有任何操作时看起来也没用。