是否有benifit使用:

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?

谢谢!

有帮助吗?

解决方案

根据你的语言,你应该更喜欢的getter / setter了前面,因为你以后不能介绍他们(我看着你,JAVA)如果事实证明你确实需要他们。

其他提示

这真的取决于一点上,你所使用的语言/框架/工具包 -

但是,也有使用getter和相关的版本和API兼容性制定者时常常受益。这可以使用他们,都在它自己的一个非常有用的原因。

这真的不能被不知道的语言回答。 getter和setter花费更多在大多数的语言,但他们购买你的灵活性的道路。在一些语言中,你不能没有在主叫方,因为其使用语法的变化而变化的代码将公开到的getter / setter。但是,这不是用C#,我什么我大多在写的问题。

getter和setter让你做参数验证。他们让你延迟对象的创建,直到第一参考。他们有很多的好处,我使用它们,每当我需要从一开始的优势之一。

但是我用getter和setter方法,只有当我需要他们的时候了,或者当我敢肯定,我会需要的灵活性。否则,我认为它们是膨胀。

作为一个方面说明,你可以用一个公共变种开始,如果有必要将其转换为一个getter / setter方法后来在代码..这取决于你所使用的语言。

如果你的财产是完全哑了,并且对班上其他同学没有副作用 - 然后通过各种手段只是暴露它作为一个公共领域

它只是在很多情况下,你的属性的的有副作用,所以你需要控制它们是如何设置和访问。

作为一个简单的例子,如果你的公共变量没有被设置为在您的构造函数的东西会发生什么?你还好吗这个返回为空?或者你想使用这个变量的东西,而不是返回null?这是一个简单的例子,其中一个自定义的getter是值得的。

Getter和Setter也让您对哪些值变量可以被设置为更多的控制。

bool setAge(int age){
   bol retVal = true;

   if(age <= 0)
       retVal = false;

   return retVal;
}

如果没有二传手,可以将该值设为零,不好的事情可能发生。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top