为了更好的隐藏数据成员,将对数据成员的存储与访问分离开,避免直接访问可能造成的错误,同时又具备使用数据成员的灵活性,我们用到了属性。对于属性的读写我们用到set和get。通过set方法来设置属性,get方法来获取属性。
对于属性的读写主要有两种方式:
1、与Java相同。使用纯方法来访问属性。具体代码如下
class Student { private string name; private uint number; public void SetName(string name) { this.name = name; } public void SetNumber(uint number) { this.number = number; } public string GetName() { return name; } public uint GetNumber() { return number; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
使用:
class C { public static void Main(string[] args) { Student s = new Student(); s.SetName("Mike"); s.SetNumber(23); Console.WriteLine("student name:{0},number:{1}",s.GetName(),s.GetNumber()); } }1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
输出结果:
2.使用属性方式访问属性。
使用这种方式需要注意,同一属性的get和set方法不能够分开定义。及name属性的set和get方法都要放在public string Name的属性定义中,若有两个public string Name编译会报错。编译器会认为Student类定义了两个同名的属性,一个只读一个只写。
class Student { private string name; private uint number; public string Name { set { name = value; } get { return name; } } public uint Number { set { number = value; } get { return number; } } }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
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
使用:
class C { public static void Main(string[] args) { Student s = new Student(); s.Name = "Mike"; s.Number = 23; Console.WriteLine("student name:{0},number:{1}",s.Name,s.Number); } }1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
输出结果: