使用是否有利:
private var _someProp:String;
public function set someProp(value:String):void
{
_someProp = value;
}
public function get someProp():String
{
return _someProp;
}
与仅使用:
相反public var someProp:String;
我意识到使用getter / setter在需要进一步处理或需要通知属性更改的时候会很有用:
public function set someProp(value:String):void
{
_someProp = value;
_somePropChanged = true;
doSomethingElse();
}
但如果你不需要这个,那么有没有理由使用getter / setter而不是使用public var?
谢谢!
答案 0 :(得分:4)
根据你的语言,你应该更好地选择getter / setter,因为如果事实证明你确实需要它们,你以后就不能介绍它们(我正在看你,Java)。
答案 1 :(得分:1)
这实际上取决于您使用的语言/框架/工具包 -
但是,使用与版本控制和API兼容性相关的getter和setter通常会带来好处。这可能是一个非常有用的理由,可以单独使用它们。
答案 2 :(得分:1)
如果不懂语言,这真的无法回答。在大多数语言中,Getters和Setter的成本更高,但它们会为您带来灵活性。在某些语言中,您无法在不更改调用者中的代码的情况下将公共更改为Getter / Setter,因为使用语法会更改。但这不是C#的问题,我在大多数时候都是这样写的。
Getters和Setters允许您进行参数验证。它们允许您在第一次引用之前延迟对象的创建。它们有很多优点,每当我从一开始就需要其中一个优点时,我就会使用它们。
但是,只有当我需要它们时,或者当我非常确定我需要灵活性时,我才会使用getter和setter。否则我认为它们是臃肿的。
答案 3 :(得分:0)
作为旁注,您可以从公共var开始,如果需要,可以稍后在代码中将其转换为getter / setter ..具体取决于您使用的语言。
答案 4 :(得分:0)
如果你的财产完全愚蠢,并且对班上的其他人没有任何副作用 - 那么无论如何只要将其暴露为公共领域。
只是在很多情况下你的属性会有副作用,所以你需要控制它们的设置和访问方式。
作为一个简单的例子,如果您的公共变量未在构造函数中设置为某些内容,会发生什么?你还可以将它作为null返回吗?或者您想将此变量设置为某个而不是返回null?这是一个简单的例子,其中定制的getter是值得的。
答案 5 :(得分:0)
Getters和Setter还可以让您更好地控制变量可以设置的值。
bool setAge(int age){
bol retVal = true;
if(age <= 0)
retVal = false;
return retVal;
}
如果没有setter,可以将值设置为零,并且可能会发生错误。