5th
2008,10
类属性的定义与定义字段有些相似之处.但结构代码要多出不少.属性一般与一个私有字段相关联,以控制对这个字段的访问,此时get块可以直接返回该字段的值.
看代码示例:
- class MyBase
- {
- private int age;
- public int Age
- {
- get
- {
- return age;
- }
- set
- {
- age = value;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- MyBase MyObj = new MyBase();
- MyObj.Age = 20;
- Console.WriteLine(MyObj.Age);
- Console.ReadKey();
- }
- }
其实属性给我的感觉像是一个门号.通过这个门号来读写相关联的字段.读写哪个字段也可以在get, set块中进行判断但这种思想不好.会导致一个属性与多个字段相关联.下面再写个示例描述写入属性配对的字段值时值不合法时怎么处理.
一般四种情况:
1:什么都不做
2:给字段赋默认值
3:继续执行,就像没有发错误一样但记录下该事件以备将来分析
4:抛出一个异常(推荐采用这种方法)
下面示例就以第4种情况做处理.
- class MyBase
- {
- private int age = 1;
- public int Age
- {
- get
- {
- return age;
- }
- set
- {
- if (value > 10)
- {
- throw new Exception("err");
- }
- else
- {
- Age = value;
- }
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- MyBase MyObj = new MyBase();
- try
- {
- MyObj.Age = 20;
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }
- Console.WriteLine(MyObj.Age);
- Console.ReadKey();
- }
- }
上面代码在set块中进行了判断.不合法时进行抛出异常处理.这时用到了throw, try, catch.
关于throw, try, catch详见 #编程:异常抛出处理.throw(),try,catch语句
Name: Cngothic 
































10 5th, 2008 at 8:20 pm edit
[...] C#编程:定义类成员-定义属性 [...]