zoukankan      html  css  js  c++  java
  • 装箱与拆箱

     装箱和拆箱是一个抽象的概念 

    ——————————————————————————————————————————————————

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

    ——————————————————————————————————————————————————

    NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对象。如果申明这些类型得时候都在堆(HEAP)中分配内存,会造成极低的效率!(个中原因以及关于堆和 栈得区别会在另一篇里单独得说说!)
    .NET如何解决这个问题得了?正是通过将类型分成值型(value type)和引用型(regerence type),C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串等。
    值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL;
    引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放!
    下面就来说装箱和拆箱的定义!
    装箱就是隐式的将一个值型转换为引用型对象。比如:
    int i=0;
    Syste.Object obj=i;

    这个过程就是装箱!就是将i装箱!
    拆箱就是将一个引用型对象转换成任意值型!比如:
    int i=0;
    System.Object obj=i;
    int j=(int)obj;

    这个过程前2句是将i装箱,后一句是将obj拆箱!

  • 相关阅读:
    My集合框架第一弹 LinkedList篇
    IP报文解析及基于IP 数据包的洪水攻击
    Oracle12c_安装2——安装篇
    Oracle12c_安装1——准备工作
    C# 控制台程序设置字体颜色
    ADALINE模型
    感知器神经网络
    神经网络学习
    深拷贝和浅拷贝
    Ubuntu免安装配置MySQL
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1966617.html
Copyright © 2011-2022 走看看