c#中值类型和引用类型的关系

    如果是直接对物体进行操作,而且操作之后的两个物体没有什么关系的话,是独立的两种行为,比如你朋友想吃你做的饭,你可以单独做两份饭,你一份,他一份,那么这种行为的话,可以类比为c#中的值类型的行为。相反如果你的朋友想要看另外的电视节目的话,而你只需要把遥控板给他,而不是直接操作电视,那么这种行为便是引用类型的行为。

    同时再来简单介绍一下操作符new所做的事情:1、计算所需的内存空间 2、为对象在托管堆上分配所需要的内存空间,分配的所有字节都设为0。3、初始化对象的“类型对象指针”以及同步块索引。4、调用类型的实例构造器了。5、最后会返回指向新建对象的一个引用。

     从上面可以看出,引用类型总是从托管堆分配,而new操作符总是返回对象数据的内存地址。

     因此得到的一个最重要结论就是:引用类型相当于unity的预制体prefab,就是说只要一个变量的所指向的对象的字段被改掉,那么所有引用该对象的变量都会受影响。而值类型就会不同,值类型的赋值会在线程栈上重新分配空间,赋值之后两个变量的值相互独立,没有关系。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值