C# property简介
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>); } } } |