C#之装箱与拆箱
2015-02-27 00:17
225 查看
C#中值类型和和引用类型实质上是同源的,所以不但可以从值类型和引用类型之间进行转换,也可以在值类型和引用类型之间进行转换。,但是两者使用的内存类型不同,使他们的转换变得复杂。
1.装箱:
在C#中通常将值类型转换成引用类型叫做装箱。
C#中值类型装箱为引用类型的过程如下:
在托管堆中创建一个新的对象实例,并分配相应的内存。
将值类型变量值复制到对象实例中。
将对象实例地址压入堆栈中,并指向一个引用类型。
运行结果如下:
2.拆箱:
在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(); } } }
相关文章推荐
- C#“装箱”(boxing)与“拆箱”(unboxing)
- C# 装箱和拆箱[整理]
- C#中的"装箱"(boxing)与"拆箱"(unboxing)
- C# 指南之装箱与拆箱
- C#的装箱和拆箱
- C#中的装箱与拆箱
- C#核心概念--装箱和拆箱(什么是装箱和拆箱)
- [C# Tips]再谈值类型的装箱和拆箱
- C#中的装箱(boxing)拆箱(unboxing)
- 关于C#装箱与拆箱的研究
- 【C#】装箱和拆箱
- c#中的装箱(boxing)和拆箱(unboxin)
- C#中的“装箱”(boxing)与“拆箱”(unboxing)
- C#中的“装箱”(boxing)与“拆箱”(unboxing) (转载)
- C#中的装箱(boxing)拆箱(unboxing)
- C#中的装箱与拆箱的概念
- C# tips ---值类型的装箱和拆箱
- C#装箱与拆箱
- C#中的“装箱”(boxing)与“拆箱”(unboxing)_C#教程
- c#装箱,拆箱