RJJ*_*son -2 .net c# oop properties
如果属性可以存储数据(如字段那样),为什么我们仍然需要字段?
比如我有这个班,
public class Music
{
public Music() { }
public float musicBPM { get; set; }
public void addBPM()
{
this.muscBPM +=10;
}
}
Run Code Online (Sandbox Code Playgroud)
它仍然有效,因为我有一个私人领域,并改变其价值,对吗?
那么,如果您可以使用该属性,那么对于现场的迫切需求是什么?
虽然自动属性模糊了相当多的区别,但是字段和属性之间存在根本区别:
换句话说,当你写作
public float musicBPM { get; set; }
Run Code Online (Sandbox Code Playgroud)
编译器创建这样的东西:
private float musicBPM_property;
public float musicBPM {
get { return musicBPM_property; }
set { musicBPM_property = value; }
}
Run Code Online (Sandbox Code Playgroud)
当你创建一个自动属性时,该字段仍然存在,但编译器巧妙地将它隐藏起来.
这就是为什么这些领域将继续作为.NET中的一个概念.但是,C#6的自动只读属性可以消除手动编写的代码中的字段.