大家好我们可以分配一个值或以其他方式返回一个值..所以有时我们通过属性(get,set)来做..任何人都可以告诉我属性的主要用途..
感谢 SAJ
答案 0 :(得分:5)
属性提供了获取和设置状态的抽象。即它们允许您定义实际上下文中获取和设置的含义。如何在setter上使用它的一个常见示例是在状态发生变化时通知订阅者。如果公开公共字段,则无法执行此操作。
答案 1 :(得分:3)
属性封装内部逻辑。它们是公共接口,允许您检查值,应用规则并允许更改内部实现。
这与直接暴露内部构件形成对比。
例如:
public int myField; // exposes implementation - BAD BAD BAD
更好地实施:
private int myField;
public int MyField
{
get {return myField;}
set {myField = value;}
}
您现在可以更改内部myField
,而不会影响课程外的其他代码。您可以将逻辑添加到setter,getter等等。
如果您没有与成员访问权限关联的任何逻辑,则可以使用自动属性:
public int MyField {get; set;}
编译器将自动生成支持字段。
答案 2 :(得分:0)
除了封装的优点之外,我们更喜欢在许多其他方式中使用带有get和set访问器的属性,因为它们提供了清晰实用的语法。
语法:
public int Field{ get; set; }
比这更明确:
private int field;
public int GetField(){
return field;
}
public void SetField(int field){
this.field = field;
}
答案 3 :(得分:0)
我只想说在私有字段上使用getter和setter,可以让您更好地控制这些字段。您可能希望仅允许授权实体访问该变量..因此您可以检查getField方法。您可能希望仅允许读取值而不更新它们,那么您只能拥有getter而不能使用setter。所以基本上使用暴露私有字段的方法,你可以更好地控制它们。