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

    C#中值类型和和引用类型实质上是同源的,所以不但可以从值类型和引用类型之间进行转换,也可以在值类型和引用类型之间进行转换。,但是两者使用的内存类型不同,使他们的转换变得复杂。

    1.装箱:

      在C#中通常将值类型转换成引用类型叫做装箱。

    C#中值类型装箱为引用类型的过程如下:

    •   在托管堆中创建一个新的对象实例,并分配相应的内存。
    •   将值类型变量值复制到对象实例中。
    •       将对象实例地址压入堆栈中,并指向一个引用类型。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int mm = 50;    //定义值类型变量
                object nn = mm; //将值类型变量装箱到引用型类型汇总
                Console.WriteLine("值为{0},装箱对象为{1}",nn,mm);
    
                mm = 100;       //改变值
                Console.WriteLine("值为{0},装箱对象为{1}", mm, nn);
    
                Console.ReadKey();
            }
        }
    }

    运行结果如下:

    2.拆箱:

      在C#中通常将引用类型转换成值类型叫做拆箱。C#中一个引用类型拆箱成一个值类型的流程如下:

    • 检查该对象的实例是否是某个给定的值类型装箱后的值。
    • 如果是则将值从实例中复制出来。
    • 赋值给值类型变量。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int mm = 50;
                object nn = mm;
                Console.WriteLine("装箱:值为{0},装箱对象为{1}", mm, nn);
                int zz = (int)nn;//取消装箱=拆箱
                Console.WriteLine("拆箱:装箱对象为{0},值为:{1}",nn , zz);
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    对象的创建过程以及super关键字的使用
    Java语言基础
    数据结构-思考总结
    ssh简化登录
    WebStorm设置eslint保存自动格式化
    Jmeter简单使用
    nodemon添加babel支持
    VueCli 添加自定义组件报错
    shell写一个压测脚本
    Vue v-for指令中 key 的必要性
  • 原文地址:https://www.cnblogs.com/blogofwyl/p/4302464.html
Copyright © 2011-2022 走看看