使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?
如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:
public String foo;
Run Code Online (Sandbox Code Playgroud)
更糟糕的是:
private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)
而前者需要很少的样板代码.
非常简单的问题,但我发现理解我们为什么这么做非常重要.
我可以在类中创建一个属性,如下所示:
第一种方法:
public class MyClass
{
public string MyProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法:
public class MyClass
{
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
几乎所有文章都使用后一种方法.为什么我们需要在类中创建一个临时变量来保存字符串值.为什么我们不能只使用第一种方法?第二种方法是否提供任何好处?创建额外的变量来存储值是不是很糟糕的内存和性能?