struct (5.31)
和C++中接触到的struct结构不太相同的一点是,C#中的struct内可以内嵌函数作为成员,或者从某种意义上说,struct类型与类类型有着非常多的相似之处。所有的不同点归纳如下:
1. struct为值类型,定义在栈上,类为引用类型,定义在堆上。
2. 使用struct时,不能自定义默认构造函数,因为系统会自动生成并初始化变量,如果自定义构造函数(非默认),系统要求程序中对所有成员变量进行手动初始化,否则将报错;而类类型允许用户定义默认构造函数,如果不自定义,系统也将自动生成并初始化变量,反过来,如果用户定义有任何构造函数(非默认构造函数),系统将不会自动生成默认构造函数,这就意味着,如果要给类定义构造函数,一定不能忘记添加默认构造函数的定义。
3. 对struct变量的调用属于值调用,对对象的调用属于引用调用,这点必须强调并且明确。