C#中将值类型变量赋值给对象与将对象赋值给值类型变量(装箱与拆箱)

来源:互联网 发布:kmp算法next原理 编辑:程序博客网 时间:2024/06/05 04:16


  C#笔试题中,经常会考 到装箱和拆箱的问题。一般都是通过间接的方式来考查,如:问将一个整型数据赋值给一个对象会进行什么操作?  (答案是装箱)或通过程序题来考查 ,写出以下程序的输出结果?(答案:a = 17  j=17)

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            int i = 17;            object a = i;            Console.WriteLine("a = "+a);            int j = (int)a;            Console.WriteLine("j = "+j);                   }    }}

         通俗的说法,装箱和拆箱的过程就是值类型与引用类型相互转化的过程。

         装箱和拆箱的过程是将值类型视为对象。装箱时,将值类型数据存储于垃圾回收堆中;拆箱时,将值类型数据从对象中取出来。

         为什么要进行装箱和拆箱,请举例说明?

         答:当进行函数调用时,如果函数的形参为引用类型,但要将值类型变量传递给该函数,那么就要将值类型变量装箱;一个非泛型容器,为了保证通用性,通常将数据类型设为引用类型,在容器中装入值类型数据时就需要装箱。