2017-02-24 86 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:是的,確切的,它應該如何表現。反思或不反思。 –