日期:2014-05-17  浏览次数:20824 次

C#中属性和字段的区别和联系<转载>

C#中属性和字段的区别和联系

问题:C#语法中针对类中数据成员的访问引见的属性和字段概念和C++相比,C++中只要属性(觉得相当于于C#中的字段),但是在运用C#过程中,假入本人要写一个类,包含几个数据成员(即字段)但是为了让外边能够访问还需求写对应的属性出来,岂不是有点费事?使用属性的优点是什么?

C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋值于某个范围、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法做到的,于是就有了属性,属性中包含两个模块:setgetset模块负责属性的写入工作,get模块负责属性的读取工作。在两个模块中都可以做一些其他操作,如在set中验证赋的值是否符合要求并决定是否进行赋值。当缺少其中一块时属性就只能读或只能写,setget块中属性必需有一个,因为即不能读又不能写的属性是没有意义的

class Product?? //商品类

??? {

??????? //私有字段

??????? private string _Pname;?? //商品名称

??????? private bool _IsNoEmperty;??? //是否有库存

??????? private float _Price;???? //商品单价

??????? private int _PCount;????? //商品数量

??????? //属性:

??????? //可读写