zoukankan      html  css  js  c++  java
  • 装箱(boxing)和拆箱(unboxing)

    Object是引用类型,但是它的子类Int32竟然不能去Object能去的“要求必须是引用类型” 

    的地方,违反了继承的原则,所以需要把Int32装在Object中才能传递。

    装箱:从值类型接口转换到引用类型。

    拆箱:从引用类型转换到值类型。  

                object obj = null;//引用类型

                obj = 1;//装箱,boxing。把值类型包装为引用类型。

                int i1 = (int)obj;//拆箱。unboxing

    2)下面三句代码有没有错,以inboxing或者unboxing为例,解释一下内存是怎么变化的

    int i=10;

    object obj = i;

    int j = obj;

    分析:在inboxing(装箱)时是不需要显式的类型转换的,不过unboxing(拆箱)需要显式的类型转换,所以第三行代码应该改为:

    3 int j = (int)obj;    

    要掌握装箱与拆箱,就必须了解CTS及它的特点:

        NET重要技术和基础之一的CTS(Common Type System)。CTS是为了实现在应用程序声明和使用这些类型时必须遵循的规则而存在的通用类型系统。.Net将整个系统的类型分成两大类 :值类型和引用类型。

    CTS中的所有东西都是对象;所有的对象都源自一个基类——System.Object类型。值类型的一个最大的特点是它们不能为null,值类型的变量总有一个值。为了解决值类型不可以为null,引用类型可以为null的问题,微软在.Net中引入了装箱和拆箱:装箱就是将值类型用引用类型包装起来转换为引用类型;而从引用类型中拿到被包装的值类型数据进行拆箱

    (*)

    object.ReferenceEquals();//用来判断两个对象是否是同一个对象

    Console.WriteLine(object.ReferenceEquals(3,3));//因为两个3被装到了两个箱子中,所以是false

    Equals ==的关系

  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/boke1/p/11056669.html
Copyright © 2011-2022 走看看