结构是值类型,首先 NEW 在结构的使用有 类类型有所不同,
类类型使用new 是调用构造函数在托管堆分配内存存储空间,返回其地址。而结构类型使用new 不会分配托管堆分配内存而是调用构造函数初始化字段。结构的构造函数要么是有参数的,不可能是无参数,应为无参数是系统自己隐式添加的,就算有另外的构造函数,如果你显示的声明一个无参数的构造函数在结构里,将导致编译错误。
结构的是值类型 存储在栈中,值类型的变量即包括变量地址和变量内容所以可以直接像int ,double ..等使用,不要需要new 使用new 只是说可以方便一点初始化字段,但需要自己添加构造函数。
struct my
{
int x;
int y;
my(int x,int y)
{this.x=x;this.y=y}
}
my mytest=new my(10,10);
这样mytest.x 和mytest.y 都初始化为10;
结构还可以这么初始化
my mytest; 现在的mytest 数据值类型变量
mytest.x=XX;
而引用类型就不允许这么做,引用类型存储其地址,所以需要使用new返回地址及分配空间。
不能在结构中初始化字段,
比如
struct my
{
int x=10;
}
将导致编译错误,因为my现在属于一个数据类型,它不占用存储空间,只有在定义变量的时候才能初始化使用
struct my
{
int x;
}
my mytest;
mytest.x=10;