属性(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 (which are parameterized properties)
public int this [ int index ]
{
get { return _theValues [ index ] ; }
set { _theValues[ index ] = value; }
}

本文探讨了为何在C#中使用属性而非数据成员,包括其作为面向对象封装的优势、.NET对属性的广泛支持(如数据绑定和设计时特性)、属性在安全性与线程控制中的作用、以及属性的可继承性与接口实现。建议在公开接口中始终使用属性,以确保灵活性和未来设计变更的可能性。
最低0.47元/天 解锁文章
642

被折叠的 条评论
为什么被折叠?



