类的界说的是引用类型,重视在堆上创建,有的时候类只包罗极少的数据,应为打点堆而造成的开销是很大的。这时候更好的做法就是将类型界说成布局。布局是值类型,在栈上存储,,能有效的减小内存打点的开销。c#基元类型在Microsoft.NET Framework中对应的类型,string和object类型是类而不是布局。
一、声明布局
声明布局要以struct关键字开头,后面跟上类型名称,最后是大括号中的布局主体。
例如下面代码,首先申请一个私有的abc三个变量,使用Variable要领设置变量值,分袂使用三个Out要领返回值。
struct Variable { private int a, b, c;//设置为私有的变量 public Variable(int aa,int bb,int cc) { a = aa; b = bb; c = cc; } public int aOut() { return this.a; } public int bOut() { return this.b; } public int cOut() { return this.c; } } namespace t
注意:许多常用的操纵符不能自动应用于自界说布局类型,例如:==和!=操纵符就不能在自界说的布局体变量。但可以使用所有布局都果然的Equals()要领来对照,还可以作为本身的布局类型显示声明并实践操纵符。如果一个观点的中点在于值而并不是成果,就可以使用布局来实现。
二、布局和类的区别
1、不能为布局声明一个默认结构器,就是指的是无参数的结构器。应为编译器始终会自动生成一个,但是在类中,只有在没有本身写结构器的时候,编译器才会自动生成默认结构器,此外编译器为布局生成的默认结构的总是将字段设置为0、false或者null,这个和类是一样的。
如果不想使用这些默认值,可以像上面的代码一样构建一个本身结构的有参数的结构器。但是需要做到的是吧所有的变量都要初始化,因为编译器通过本身创建的结构器来初始化变量。
2、类的实例可以在声明时初始化,但是布局是不允许的。如果初始化会在编译时提示,布局中不能有实例字段初始值设定项。
三、布局的使用
这个位置,假如使用默认的结构器的话是不用使用,new 后面的来初始化值的。也可以在要领中直接写。