Unity 中C#的装箱与拆箱过程

概念简述:

在装箱拆箱之前简单说一下值类型、引用类型:

值类型:原类型(SbyteByteShortUshortIntUintLongUlongCharFloatDoubleBoolDecimal)、枚举(enum)、结构(struct)等,是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL;

引用类型:类、数组、接口、委托、字符串等,在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放;

装箱:将值类型转换为引用类型,用于在垃圾回收堆中存储值类型,是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换;

拆箱:将引用类型转换为值类型,从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换;

利用装箱和拆箱功能,可通过允许值类型的任何值与Object类型的值相互转换,将值类型与引用类型链接起来

简例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoxExample : MonoBehaviour {

    int val = 100; 
// Use this for initialization
void Start () {
        object obj = val;
        Debug.Log("装箱过程(将值类型转换为引用类型的过程):" + obj);
        int num=(int )obj;
        Debug.Log("拆箱过程(将值类型转换为引用类型,再由引用类型转换为值类型的过程):" + num);
     //判断拆箱后的类型
      if (obj is Vector3)
        {
            Debug.Log((Vector3 )obj );
        }
        else if (obj is int )
        {
            Debug.Log((int )obj);
        }
}
}
posted @ 2018-06-11 10:14  低小调  阅读(479)  评论(0编辑  收藏  举报