13.7 结构和类的对比
结构和类虽有诸多相似,但也有很多不同之处,表13-3包括但不限于它们之间的异同。
13.7.1 字段初始化
无论结构使用预定义的、无参数的构造函数,还是使用用户定义的、有参数的构造函数进行初始化,都会初始化结构的数据成员。其中,前者将数值型初始化为默认值,引用类型初始化为null;后者将使用用户自定义的初始化策略对各成员进行初始化。因此,结构类型的数据成员不允许在声明时显式初始化,例如,下述代码是错误的:
public struct AddressBookEntry
{
public string Name="Tom";//编译错误
public string MobilePhone="1234567";//编译错误
}
编译器将产生错误信息如下:
结构中不能有实例字段初始值