2015-08-14 71 views
1

如何與構造一個只讀屬性,可以讓你設置的值:從正常你需要一個帶有構造函數的只讀屬性,讓你爲該屬性設置值?

public class Customer 
{ 
    private int m_id = -1; 

    public Customer(int id) 
    { 
     m_id = id; 
    } 

    public int ID 
    { 
     get 
     { 
      return m_id; 
     } 
    } 
} 

不同的獲取,設置屬性類似下面的?

public class Customer 
{ 
    private int m_id = -1; 

    public int ID 
    { 
     get 
     { 
      return m_id; 
     } 
     set 
     { 
      m_id = value; 
     } 
    } 
+3

對象與前者構建後,您不能設置屬性的值,但您可以使用後者。 –

+0

@CraigW。即如果通過整個對象正確完成,則爲不可變對象。 –

回答

1

可以使用readonly關鍵字聲明在對象構造函數中設置的成員變量。這允許變量作爲一個常量(例如試圖改變它會產生一個編譯時錯誤),但仍然允許你爲每個對象實例設置一個不同的值。這是一些語法糖,可以幫助防止編碼人員意外修改不需要修改的值。

1

read-only property不允許程序中的其它類來設置property值。傳統的property呢。

在這種情況下,class迫使程序員在構造函數中提供了一個intID。有一個public property幾乎可以否定這個要求,因爲程序員可以在任何時候改變ID的值。

相關問題