c# - 为什么我要使用自动实现而不是封装?
问题描述
private int someInt;
public int GetSomeInt()
{
return someInt;
}
我什么时候在下面的代码上使用上面的代码?
public int SomeInt { get; set; }
我被告知要始终封装所有变量而不是将它们声明为公共变量,而自动实现似乎就是这样做的。
由于该字段被宣布为公共,这是否会使封装的目的无效?
解决方案
自动实现只是封装字段的语法糖,除了设置或检索字段值之外不需要其他逻辑。它不会取代封装,它只是为了节省时间和击键。您自己的代码无法访问自动实现的属性的支持字段——可见的只有属性。此属性及其访问器可以具有字段可以具有的任何相同访问修饰符。
具有私有支持字段的更准确的自动实现等效项包含私有设置器:
public int SomeInt { get; private set; }
推荐阅读
- html - 单击网页中的放大按钮或任何按钮时,它不会导航到详细信息页面
- java - Java中用于类的修饰符
- java - Gradle`java-platform`插件:如何设置依赖项动态版本解析?
- html - 轮播图像未显示在移动设备中
- ios - 如何从firebase数据库中检索url并通过UIButton(SWIFT)显示url?
- r - R - 创建一个变量,记录组中其他成员的分类信息
- php - 与 Symfony 5 的多对多关系:不保存
- reactjs - 无法在 redux 中调度函数调用
- python-3.x - 如何删除和重新显示 tkinter 标签
- javascript - 为什么当您在异步调用的构造函数中使用 setState 时此组件不更新 - ReactJS/ReactNative?