huankfy

明月出天山,苍茫云海间

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

   声明一个变量,如果没有赋值就使用(编译器会给其一个对应类型的默认值,但这不是赋值),那么就会出错,通常情况下编译器可以帮助发现问题(使用未赋值的变量编译通不过)。

   构造函数是用来初始化类、结构成员变量的。除了要初始化声明的成员变量,还需要考虑初始化的时机。如下面这个:

    1     public struct MyData

 2     {
 3         string m_name;
 4         int m_age;
 5 
 6         public MyData(string name ,int age,bool flag) { 
 7             if (flag) {
 8                 proccess();
 9             }
10             m_name = string.Empty;
11             m_age = 0;
12         }
13 
14         void proccess() {
15                 m_age+= 1;  
16         }
17         // code ecli.
18         // 
19     }

   这个是编译通不过的。需要将所有的成员变量初始化放在最前面。这么更改就可以了:

 1     public struct MyData
 2     {
 3         string m_name;
 4         int m_age;
 5 
 6         public MyData(string name ,int age,bool flag) { 
 7              m_name = string.Empty;
 8              m_age = 0;
 9              if (flag) {
10                 proccess();
11              }
12            
13         }
14 
15         void proccess() {
16                 m_age+= 1;  
17         }
18         // code ecli.
19         // 
20     }                                                                                                               举这个例子只是为了说明在初始成员变量的时候要考虑时机。struct声明的时候是不可以进行赋值操作的,在类中可以。所有的成员变量未被赋值之前,操作成员函数也就不允许。

 

posted on 2008-10-28 10:27  Yanbo.Hu  阅读(9669)  评论(0编辑  收藏  举报