设置为私有或没有私有关键字的属性.有什么区别

本文关键字:属性 什么 区别 设置 关键字 | 更新日期: 2023-09-27 18:35:55

我正在设置这样的类的属性

public string Name { get; set; }

但我也可以这样设置属性

public string Name { get; private set; }

我想知道它们之间的区别?它们的范围是什么?

设置为私有或没有私有关键字的属性.有什么区别

这意味着您不能从类实例设置此属性。只有同一类的成员才能设置它。因此,对于外人来说,这个财产成为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将在Name2中设置值,但无法直接在Name2中设置值。

他们有什么范围?

由于Name1Name3属性是公共的,因此它们及其获取和设置方法随处可用。

Name3也是公共的,但它的集合是私有的,因此属性和 get 方法将在任何地方可用。设置方法范围仅限于类(private访问修饰符在定义它的实体内具有范围)。

对于情况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; }
}

第一个将具有类中可用的SetGet方法。第二个方法将在您的类中提供Get方法,但Set方法仅在您的类中可用。这通常表示只读行为。