是公共getter和私有setter同名可能在c#?

Blu*_*ird 37 c# properties

如何为物业制作公共吸气剂和私人定位器?以下是否正确?

public String Password
{
    set { this._password = value; }
}

private String Password
{
    get { return this._password; }
}
Run Code Online (Sandbox Code Playgroud)

And*_*bel 89

是的,即使使用自动属性也是可能的.我经常使用:

public int MyProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)

  • 那个问题和Jon的回答说有些情况下这是不行的,特别是如果值应该只读(在ctor运行后不可能设置)使用auto属性是错误的.与任何语言功能一样,都有正确和错误的用法. (2认同)

Cod*_*ray 11

是的,从C#2.0开始,您可以为getter和属性的setter指定不同的访问级别.

但是您的语法错误:您应该将它们声明为同一属性的一部分.只需标记要限制的那个private.例如:

public String Password
{
    private get { return this._password; }
    set { this._password = value; }
}
Run Code Online (Sandbox Code Playgroud)


Jas*_*ore 5

public String Password
{
    private set { this._password = value; }
    get { return this._password; }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用自动实现的属性:

public String Password { get; private set; }
Run Code Online (Sandbox Code Playgroud)

  • 这会让两者都公开吗?我想让 getter 方法仅对类本身可用,即私有的。 (2认同)