我已经查看了至少 10 个有关 get/set 的 SO 问题,但找不到我的问题。所以我希望这不是重复的。
public class myint
{
public int value{get;set;}
}
对比
public class myint
{
public int value;
}
上面的两个代码对我来说看起来是一样的。如果我想使用 myint 类,我只需编写下面的代码,它就可以在任一类上运行。
myint A;
A.value=10;
那么 get/set 有什么用呢?
你问的是使用公共(public)实例变量与我假设的 getter/setter 属性之间的区别。
属性允许您进一步封装有关获取或设置变量的逻辑,例如添加简单的验证逻辑。例如,如果有人将您的值设置为小于零,您可能会抛出异常。您还可以在 getter/setter 中添加更多逻辑,例如同步特定字段。
其他一些区别:
- 属性可用于在大多数 .NET UI 框架中轻松进行数据绑定(bind)。
- 反射的工作方式不同。
- 获取/设置的不同访问级别与例如您的实例变量,您可以在只读、私有(private)、 protected 、静态等之间进行整体选择。
- 访问属性的开销更大。在游戏和对性能高度敏感的情况以外的大多数用例中,这通常并不重要。