接上上篇文章,这章我们看实战代码
Question:
首先 struct是一个结构 那么可以这样使用
struct MyStruct
{
public int a;
}
MyStruct struct;
struct.a = 1; //编译通过,符合struct不用new的说法
Rectangle rc; //Rectangle也是一个Struct啊,我还是不用new
rc.X = 1; //Error,编译失败。 使用了未赋值的局部变量“rc”为什么???
answer:
之前说的这句,那在初始化所有字段之前,字段将保持未赋值状态,且对象不可用。没有错。因为对于rectangle结构体中,其x为字段(即属性)定义方式。故未对rectangle进行new之前,是未赋值的。
而自定义的MyStruct,是使用Public变量的方式,系统在编译时,自动默认已经给初始化了。
故你可以直接进行赋值,不会报错。对于非标准属性赋值,编译器会自动添加上默认值。
-
如果把MyStruct改为,struct MyStruct{ private int a; public int x { get { return this.a; } set { this.a = value; } } } 这时候再对于MyStruct a; a.x=0;就会报与rectangle一样的错误。故rectangle r; r.x=0会报错。