属性和私有集
本文关键字:属性 | 更新日期: 2023-09-27 18:20:32
为什么此代码不起作用?
class Test
{
int Abc { private set; get; }
}
属性的默认访问修饰符是什么?
Abc属性必须是公共的、受保护的或内部的:
public int Abc { get; private set; }
在您的情况下,属性是私有的(因为您没有指定访问修饰符),所以它已经是一个私有集。您不能在当前类之外修改它的值,因此在这种情况下声明私有setter实际上没有意义。
所有类成员(包括属性)的默认可访问性为private
;请参阅辅助功能级别。set
之前的private
是多余的,因此出现错误。您的代码在语义上等效于以下内容:
class Test
{
int Abc { get; set; }
}
当属性更容易访问时,只需要为set
访问器指定private
访问修饰符;例如(常见场景):
class Test
{
public int Abc { get; private set; }
}
class Test
{
public int Abc1 { private set; get; }
protected int Abc2 { private set; get; }
internal int Abc3 { private set; get; }
protected internal int Abc4 { private set; get; }
}