bla*_*ole 0 c# encapsulation private public
private int someInt;
public int GetSomeInt()
{
return someInt;
}
Run Code Online (Sandbox Code Playgroud)
我什么时候可以使用上面的代码而不是下面的代码?
public int SomeInt { get; set; }
Run Code Online (Sandbox Code Playgroud)
我被告知要始终封装所有变量而不是将它们声明为公共变量,而自动实现似乎就是这样做的.
当字段被声明为公共时,这是否会使封装的目的无效?
除了设置或检索字段值之外,当不需要额外的逻辑时,自动实现只是封装字段的语法糖.它不会取代封装,只是为了节省时间和击键.您自己的代码无法访问自动实现的属性的支持字段 - 所有可见的属性.此属性及其访问器可以具有字段可以具有的任何相同的访问修饰符.
与私有支持字段相比,更准确的自动实现的等价物包含私有的setter:
public int SomeInt { get; private set; }
Run Code Online (Sandbox Code Playgroud)