C#字段与属性
字段可以有静态的,但是属性必须是实例的
其实有些属性能实现的功能,字段也能实现,但是不鼓励用字段来实现,因为OOP和编程的一个原则就是数据封装,意味着我们不应该将字段的类型以公开的方式提供给外界。
还有一些原因,例如我们可能希望访问一个字段的同时执行一些额外的操作,或者缓存某个数值,或者延迟创建某个内部对象。
我们也可能希望对字段的访问是线程安全的。或者字段可能只是一个逻辑表示,其真正的值并不是以字节的形式存放在内存中,而是通过某种算法计算得来的
所以建议将所有的字段访问限制为私有
举个例子:
1 private int id;//字段 2 3 public int ID//属性 4 { 5 get { return id; } 6 set { id = value; } 7 }