- 首先最重要的一点就是结构是值类型,而类是引用类型。
- 不能为结构声明一个自己的默认构造函数(无参的)
Struct Time
{
public Time(){……}//编译时会出错
}
之所以不能在struct中声明自己的无参构造函数,是因为编译器将始终生成一个默认构造函数。在类中,只有在你没有写任何构造函数的前提下,编译器才会生成一个默认构造函数。
结构:假设你自己写了一个有参的构造函数,但是你没与在此构造函数中初始化所有的字段,那么编译器将不会再帮你初始化它。(但是在类中是可以的)即必须在结构的所有构造函数中显示的初始化所有字段,否则就会得到编译器错误。
比如:若Time(Time中三个字段,hours、minutes、seconds)是一个类,则下例能编译,而且seconds会被初始化为0。但由于Time是一个struct,所以它无法编译:
Struct Time
{
public Time(int hh,int mm)
{
hours=hh;
minutes=mm;
}//编译错误,seconds未能初始化
}
3.在一个类中,可以再声明的同时初始化实例字段,但是在struct中不能这么做。每个结构都必须在它所以构造函数中初始化它的所有字段。