在get和set访问器中都加入了条件,并且是我手动书写的,VS给我们提供了一个自动封装字段的方法,下面我们来按照我说的步骤来试一下,在类中定义一个字段 string a="我是A"; 接着把鼠标停放到a处,点击右键“重构”--“封装字段”,VS会自动的封装a字段,并且取名为A,你也可以更改属性的名字,点击确定,a字段的A属性就封装好了,封装后的代码为:
string a = "我是A";
public string A
{
get { return a; }
set { a = value; }
}
通常我们都习惯叫get访问器和set访问器,如果我们想得到类中的属性值时,用到的是get访问器return返回出值,如果我们想给属性赋值的时候,就会用到set访问器,属性有4种形式:分别是可读可写属性,既有get也有set访问器;如果只有get访问器,这个属性是只读的,无法赋值;如果只有set访问器,这个属性就只能被赋值,不能读取,以后我们要学习界面设计时,所有的控件都有很多的属性,这些属性就都是只写的,并且有一定的赋值要求,比如在网页上画一个表格,我们设置表格的边框颜色,就使用到边框颜色的属性,如果我们赋的颜色值不符合规范,就会出现错误提示;还有一种属性是加入了static关键字的静态属性,静态属性只能封装静态数据,比如:string static a = "我是静态A";
public static string A
{
get { return a; }
set { a = value; }
}
下面我们把上面的例子继续深化,声明一个对象boby,我们来具体看一下如果利用属性的读写功能:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

我们来看一下运行的结果:
通过这个实例相信大家已经了解了属性的用法,下面我们把我上节课有关军种的实例做一下改动,同学们再来体会一下属性的用法:

运行结果为
对比我上节课用的普通方法即(被我注释掉的)代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

运行结果如下:
从结果来看,很明显,如果用上面的例子,男性这个军种如果不采用属性,而是用被我注释掉的方法(第3行)一定会被赋值给Armytype字段的,而使用了属性时,“男性”因为进入了default代码快如46-48行,我们没有加入Armytype=value;这句代码,使得无法对字段Armytype赋值,这时代码第65行,Armytype1的值仍然为空,而不是“男性”,属性的优点就体现在这,所以我在前面的课程中曾说属性是保护字段的。
本节课我们就讲到这,下节课我们来学习方法的参数类型.