在类中有时候要使用属性还是方法,没有硬性规定,但有以下约定:
1.客户机代码应该能读取字段的值,最好不要使用只写属性,如,应该使用SetPassword()方法,而不是Password只写属性
2.读取一个值不应花太长时间,实际上,如果是一个属性,通常表示读取过程花的时间相对较短
3.读取某个值不应有任何不希望的负面效应。设置属性的值,不应有与该属性不直接相关的负面效应
4.应可以用任何顺序设置属性
5.顺序读取属性应该有相同的效果。如果属性的值可能会出现预料不到的改变,应把它编写为一个方法,如监视汽车运动的类中,把speed编写成属性就不是一种好的方式,应使用GetSpeed(),另一方面,应把Weight和EngineSize编写为属性,因为对于给定的对象,它们是不会改变的
对于字段,用法非常简单。字段应总是私有的,但在某些情况下可以把常量或只读字段设置为公有,原因是如果把字段设置为公有,就可以在以后扩展或修改类
今天学到了一点属性的新知识,就是可以对属性值进行修改,如有属性
- public int myproperty
- {
- get
- {
- return myfield;
- }
- set
- {
- myfield = value;
- }
- }
- 则可以使用xx.mypeoperty++;
- 则myfield的值增加1
- 允许给属性的get和set设置不同的访问修饰符,如public的get访问权限和private或protected的set访问权限,这有助于控制属性的设置方式。
-
-
当没有任何访问修饰符时,是指具有属性的访问级别。
-
-
在get和set中,必须有一个具备属性的访问级别,如属性为public,而set为private,get为protected,则会产生一个编译错误。
阅读(1541) | 评论(0) | 转发(0) |