Class AND Struct (2)

接上上篇文章,这章我们看实战代码

 

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会报错。

 

 


 

转载于:https://www.cnblogs.com/heaven.kaixin/archive/2011/03/12/1982482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值