property专属的关键字就只有value。其他的性质实现都是用其他的方法的组合。property通过对一系列方法的灵活组合应用,能够间接地对私有的成员变量进行赋值操作和得到值。因为是间接地,私有变量的隐私性也是得到了保护。在下面这个例子中:
定义一个Teacher类。老师的性别是隐私的,名头也是隐私的。但是,可以定义一个property,用set和get方法间接地外部操作。注意这个专有的关键词value,它代表在外部赋值时等号右边的值,也就是输入的值。在property的set内部,是可以对value进行操作的。set方法是非常灵活的,可以有多种操作。
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
|
<strong>using</strong> System;
<strong>namespace</strong> PropertyQuest
{
class
Teacher{
string sex;
//性别是私有的
string title;
//头衔是私有的.假如头衔就是女老师,男老师
<strong>
public
</strong> stringTitle{
set{
sex = value.<strong>Split</strong>(
' '
)[
0
];
//value是你在主程中,对Title赋值的时候,等号右边传递的值.
//字符串的split()方法是以一个或若干个字符为分隔符,分隔后的子串以字符串数组形式返回.这和Python蛮像的.
//[0]就是要得到第一个字符串.因为我要输入的Title是"female teacher"或者"male teacher",因此
//我以空格分割后,第一个字符串就是性别
title = value;
//上一步操作sex,这一步操作title.说明set方法是很灵活的,一次可以设置多个成员变量
get {
return
title;
//间接得到title,title在set中已经设置
}
}
<strong>
public
</strong> string Sex {
get{
return
sex;
//间接得到sex的值.在上一个property中,sex被设置,在
//这个property中,单独使用get,得到sex.很灵活的
}
}
}
class
Program{
<strong>
public
</strong>
static
void
<strong>Main</strong>(string[] args)
{
Teacher t = <strong>
new
</strong> Teacher();
t.Title =
"female teacher"
;
//等号右边的就是value的值,赋给property Title后,在Title内部是会被操作的.
//间接地再赋给私有的成员变量.私有成员变量在当前类是不可见的,
//但是在Teacher类中是可见,因此可以被其他代码块使用,比如Title{}中的set{}.
Console.<strong>WriteLine</strong>(t.Sex);
//通过property Sex间接得到私有成员变量sex的值
Console.<strong>WriteLine</strong>(t.Title);
//通过property Title间接得到私有成员变量title的值
Console.<strong>Write</strong>(
"Press any key to continue . . . "
);
Console.<strong>ReadKey</strong>(<strong>
true
</strong>);
}
}
}
|