2012-05-31 60 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方法将只在您的班级内提供。这通常表示只读行为。