属性(Properties),是对数据成员( Data Member)的封装,内部编译成IL时,是调用的方法,只是给了一个名字叫做属性(Properties);为什么推荐使用属性,有一下几个原因:
1.基于面向对象的思想,对数据多一层封装,更加解耦;在对数据成员赋值或者读取值的时候,可以加上自己的逻辑,逻辑变化的时候,调用地方不用修改,而只是属性内部修改,这个可以认为是一种设计模式;
2..Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。例如Web form里面控件都是通过属性来设置更改的;
3.属性内部可以做代码安全性检查,以及线程安全性控制;
public string Name{
set{
lock(this){
//…
}
}
}
4.属性内部实现是方法,所以属性可以是virtual,可以被继承重写覆盖;
5.属性可以是接口成员,被实现类实现;
6.If your type should contain indexed items as part of its interface, you can use indexers (whic