一個類,有時候搞不清楚到底用成員變量還是屬性。
如:
成員變量
public string Name;
或者用屬性
private string name
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
屬性與成員變量類似,它們都提供數據存儲,但屬性的功能遠比成員變量強大。屬性由特殊方法(Get 和 Set 訪問器)訪問。Get 和 Set 訪問器允許在設置或檢索屬性之后驗證屬性值、執行其他代碼或執行其他任務
例如
成員變量這樣寫
public readonly string Name;
那還是可以是只讀了
private string name
public string Name
{
get
{
return name;
}
}
面向對象的編程方法是要抽象、封裝;在類中,定義的變量是正對類本身而言,我們把它們叫做域。它可以為public ,private等;屬性是針對外部看到的類的特性,是類展示給外部使用者的特性。前面我們講到了域可以為public,但這樣把域申明為public將 不利於類的封裝,因為外部使用者可以對類進行直接修改。所以我們就可以用到屬性,我們只是公開它們的屬性,至於如何對其進行賦值(set)如何進行取值 (get)都已經進行了封裝,對於類外部是不可見的。對於外部使用者來說只能夠使用它,不能控制它,如何控制操作是由類自身決定的。你理解了嗎?