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的字段未得到初始化