我们经常被告知我们应该通过为类字段制作getter和setter方法(C#中的属性)来保护封装,而不是将字段暴露给外部世界.
但是很多时候,一个字段只是用来保存一个值,并且不需要任何计算来获取或设置.对于这些,我们都会这样做:
public class Book
{
private string _title;
public string Title
{
get{ return _title; }
set{ _title = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,我有一个坦白,我不忍心写所有这些(真的,它不必写它,它不得不看它),所以我去流氓和使用公共领域.
然后是C#3.0,我看到他们添加了自动属性:
public class Book
{
public string Title {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
这更整洁,我很感激它,但是真的,除了创建一个公共领域之外还有什么不同?
public class Book
{
public string Title;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C#:公共字段与自动属性重复?我认为不会:
这个问题是不一样的"为什么要使用属性,而不是公共领域".具有指定getter和setter的属性与公共字段大不相同.我的问题是,是一个没有吸气剂和二传手的财产,任何不同.
由于最近有一个空的getter和setter的能力,使用它们而不是仅仅声明一个公共成员变量有什么好处?
例:
public string MyProperty
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
与:
public string MyProperty;
Run Code Online (Sandbox Code Playgroud)