声明一个变量,如果没有赋值就使用(编译器会给其一个对应类型的默认值,但这不是赋值),那么就会出错,通常情况下编译器可以帮助发现问题(使用未赋值的变量编译通不过)。构造函数是用来初始化类、结构成员变量的。除了要初始化声明的成员变量,还需要考虑初始化的时机。如下面这个:
public struct MyDataCode { string m_name; int m_age; public MyData(string name ,int age,bool flag) { if (flag) { proccess(); } m_name = string.Empty; m_age = 0; } void proccess() { m_age+= 1; } // code ecli. }
这个是编译通不过的。需要将所有的成员变量初始化放在最前面。这么更改就可以了:
public struct MyData { string m_name; int m_age; public MyData(string name ,int age,bool flag) { m_name = string.Empty; m_age = 0; if (flag) { proccess(); } } void proccess() { m_age+= 1; } // code ecli. }
举这个例子只是为了说明在初始成员变量的时候要考虑时机。struct声明的时候是不可以进行赋值操作的,在类中可以。所有的成员变量未被赋值之前,操作成员函数也就不允许。