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 class Ren 2 { 3 //先定义一个私有变量实际年龄age 4 int age = 10; 5 6 //再定义一个属性, 7 public int Age 8 { 9 //输出时的年龄比实际年龄age大三岁,即输出的是10+3岁 10 get { return age + 3; } 11 //给年龄赋值时,先判断年龄的范围 12 set 13 { 14 //如果年龄小于1岁或是大于120岁时,不允许赋值,提示错误。 15 if (value < 1 || value > 120) 16 Console.WriteLine("您输入的年龄有误"); 17 //如果年龄符合范围,允许赋值,赋完值后的age即是value你赋的值。 18 else 19 age = value; 20 21 } 22 } 23 //定义一个得到真实年龄的方法 24 public void realage() 25 { 26 Console.WriteLine("真实年龄为" + age + "岁"); 27 } 28 } 29 class Program 30 { 31 32 static void Main(string[] args) 33 { 34 //实例化一个人Ren类aboy孩子对象 35 Ren aboy = new Ren(); 36 37 //此时打印出的是,未通过属性直接用到的age初值,也就是真实年龄。 38 aboy.realage(); 39 Console.WriteLine(); 40 41 //现在我们直接取得孩子的年龄,因为age是私有变量,我们必须通过属性Age得到,值为虚假的大三岁的年龄 42 Console.WriteLine("通过属性得到的年龄为:"+aboy .Age); 43 Console.WriteLine(); 44 45 //现在我们给孩子的年龄赋一个0岁的值,因为age是私有变量,同样赋值也是通过属性Age, 46 //此时由于年龄范围的限制,是会报错的。 47 aboy.Age = 0; 48 49 //我们再给孩子的年龄赋一个12岁,因为age是私有变量,同样赋值也是通过属性Age 50 aboy.Age = 12; 51 Console.WriteLine(); 52 53 //此时因为年龄的范围合法,原来的age=10,便被替换成了12。 54 //我们再来打印孩子的真实年龄 55 aboy.realage(); 56 Console.WriteLine(); 57 //我们再来打印一下age改为12后的虚假年龄Age 58 Console.WriteLine("通过属性得到的年龄为:" + aboy.Age); 59 Console.WriteLine(); 60 61 } 62 }