2017-02-24 87 views
0

我是C#的新手。我们在一个类中声明私有成员变量,以使它们在声明类的外部不可访问,但是我们可以简单地声明它们是“私有”的,所以使用set和get它们的需要是什么?对于e.g我有一个一流的客户私有财产与设置/获取和私人财产之间的区别没有设置得到C#

class Customer 
    { 
     private double TotalPurchases; // { get; set; } 
     private string Name; // { get; set; } 
     private int CustomerID; // { get; set; } 
     public Customer(double tp, string nam, int id) 
     { 
      TotalPurchases = tp; 
      Name = nam; 
      CustomerID = id; 
     } 

     public void value() 
     { 
      Console.WriteLine("Total purchases so far " + TotalPurchases + " " + Name + " " + CustomerID); 
     } 
    } 

    class Program 
    { 
     static void Main() 
     { 
      // Intialize a new object. 
      Customer cust1 = new Customer(20.0, "C#", 10); 
      cust1.value(); 
      Console.ReadLine(); 
     } 
    } 

当我删除评论中的客户类,并允许属性以使用设置和获取,这都没有区别可言!

+2

没有被置为字段中未财产 –

回答

3

没有get; set;它表现为FieldField没有控制何时以及如何分配或检索Field

如果存在get set,您可以基于某些逻辑控制Property中保留的值。

private string _foo; 
public string Foo 
{ 
    get 
    { 
     if (_foo == null) return string.Empty; 
     return _foo; 
    } 
    set 
    { 
     if (value == null) return; 
     _foo = value; 
    } 
} 
+0

话虽这么说,他们也是在这个意义上,反射许可证seperately访问它们正式不同。 – Codor

+0

@Codor:是的,确切的,它应该如何表现。反思或不反思。 –