我正在询问使用 getter 和 setter 的建议。我在两个版本中编写了相同的代码:使用 getter 和 setter 以及仅使用类方法。而且我看不出它们之间的区别。
我用私有字段评级编写了类 Book。并且构造函数 Book 可以通过 RatingSetter 或 RatingMethod 为 Book.rating 分配一些东西。RatingMethod 只设置值,但我也可以创建一个仅用于获取值的方法。
class Book
{
public string title;
public string author;
private string rating;
public Book(string title, string author, string rating)
{
this.title = title;
this.author = author;
RatingSetter = rating;
RatingMethod(rating);
}
public string RatingSetter
{
get { return this.rating; }
set
{
if (value == "PG" || value == "PG-13" || value == "R")
{
rating = value;
}
else
{
rating = "NR";
}
}
}
public string RatingMethod(string rating)
{
if (rating == "PG" || rating == "PG-13" || rating == "R")
{
return this.rating = rating;
}
else
{
return this.rating = "NR";
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,安全性、验证或任何东西都没有区别。任何人都可以指导并帮助我了解有什么区别以及为什么建议使用 getter 和 setter。
getter 和 setter 只是语法糖。编译器最终会将您的 getter 和 setter 编译为 getter 和 setter方法。因此,通过自己编写 getter 和 setter 方法,您相当于在完成编译器的工作。
因此,我建议您使用 getter 和 setter,因为它们的主要用途之一是替换 getter 和 setter 方法。
以下是使用 getter 和 setter 的其他一些优点:
如果您只需要没有任何逻辑的 getter 和 setter,则 getter 和 setter 可以为您节省大量时间:
public int Property { get; set; }
Run Code Online (Sandbox Code Playgroud)IMO,getter 和 setter 的审美看起来更好。相比:
obj1.Property += obj2.Property;
Run Code Online (Sandbox Code Playgroud)
和
obj1.SetProperty(obj1.GetPropert() + obj2.GetProperty());
Run Code Online (Sandbox Code Playgroud)
我觉得后者只是有太多的括号......
保持 setter 和 getter 靠近属性声明。如果您使用 getter 和 setter 方法,您可能会不小心在属性声明和 getter/setter 方法之间编写其他方法,导致 getter/setter 方法慢慢“偏离”属性声明。下次要查找时,需要上下滚动。使用 getter 和 setter,它们将始终低于属性声明。