2012-05-31 98 views

回答

3

案例public string Name { get; private set; } 使用私人設置意味着該屬性是從外部ReadOnly。當你有一個只讀屬性並且不想顯式地聲明支持變量時它很有用。

public string Name { get; private set; }是一樣的:

private string _Name; 
public string Name 
{ 
    get { return _Name; } 
    private set { _Name = value; } 
} 
+0

後兩種情況實際上並不相同。在課堂上,'this.Name =「bill」'對於第一個實現是有效的,而不是*第二個。 – kdbanman

+0

@kdbanman,絕對正確。感謝您指出。 – Habib

5

這意味着您不能從類實例中設置此屬性。只有同一班的同學才能設置它。因此,對於外人來說,這個屬性變成read-only屬性。

class Foo 
{ 
    public string Name1 { get; set; } 

    public string Name2 { get; private set; } 

    public string Name3 { get { return Name2; } set { Name2 = value; } 
} 

然後

Foo f = new Foo(); 

f.Name1 = ""; // No Error 

f.Name2 = ""; // Error. 

f.Name3 = ""; // No Error 

Name3將設定值Name2Name2設定值直接是不可能的。

他們有什麼範圍?

由於Name1Name3財產是公開的,使他們和他們的get和set方法是隨處可見。

Name3也是公開的,但其集合是私人的,所以屬性和獲取方法將隨處可用。設置方法範圍僅限於類(private訪問修飾符在定義它的實體內部具有作用域)。

+0

感謝您澄清這一點很好。 –

3

第一個將有可用的出你的類SetGet方法。第二個方法將有一個Get方法可用於您的班級,但Set方法將只在您的班級內提供。這通常表示只讀行爲。