关于C#中 struct使用new 初始化

来源:互联网 发布:卡尔曼滤波 c语言 编辑:程序博客网 时间:2024/06/10 15:59

 C#中对于struct我们进行初始化时可以使用new 语句

例如有一个结构体Point

struct Point

{

float  x;

float y;

}

我们将其实例化时可以使用语句:

Point p = new Point();

这不同于类使用new 语句,我们知道对一个类使用new语句会在托管堆上分配空间,而struct是值类型所以应该在栈上为其分配空间。

实际上,以上语句的功能与

Point P; 功能基本相同,不同的是使用new 语句,C#会认为接口体中的成员已经得到初始化,此时x,y会被初始化为默认值0.

如果不使用new 语句,x,y的值可能未知。

看一个例子:

Point p = new Point();

float a = p.x;  ///////////编译通过,a的值为0

Point p;

foalt a = p.x; ////////////编译不过,编译器认为p的字段未得到初始化

原创粉丝点击