C#中的“装箱”与“拆箱”

2016-01-29 13:31 3 1 收藏

C#中的“装箱”与“拆箱”,C#中的“装箱”与“拆箱”

【 tulaoshi.com - ASP.NET 】

    装箱和拆箱:任何值类型、引用类型可以和object(对象)类型之间进行转换。装箱转换是指将一个值类型隐式或显式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,就是创建一个object实例并将这个值复制给这个object,装箱后的object对象中的数据位于堆中,堆中的地址在栈中。被装箱的类型的值是作为一个拷贝赋给对象的。如:int i = 10;object obj = i; //隐式装箱object obj = object(i); //显式装箱if(obj is int) //int       Console.WriteLine(“OK”);

Console.WriteLine(obj.GetType()); //System.Int32
有两种方式来查看包装以后的引用对象中包装的原始数据的类型。要判断原始类型是否是某个给定的原子类型,用is;如果要返回一个字符串,可以用object类的GetType方法。

拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口地值类型。注意装箱操作可以隐式进行但拆箱操作必须是显式的。拆箱过程分成两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值拷贝给值类型的变量。比如:int i = 10;object obj = i;int j = (int)obj;有两种方式来查看包装以后的引用对象中包装的原始数据的类型。要判断原始类型是否是某个给定的原子类型,用is;如果要返回一个字符串,可以用object类的GetType方法。

拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口地值类型。注意装箱操作可以隐式进行但拆箱操作必须是显式的。拆箱过程分成两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值拷贝给值类型的变量。比如:int i = 10;object obj = i;int j = (int)obj;

来源:http://www.tulaoshi.com/n/20160129/1490511.html

延伸阅读
http://www.asp888.net 豆腐技术站 我们以前在C++中曾经知道C++中有函数重载的概念,现在在ASp.Net的C#中我们仍然可以使用函数重载的 概念和定义: 假设我们在程序中定义了两个函数:String test(String str1) 而后 int test1(int i),他们的内容都是很 简单的功能 String test(String str1){ Response.Write("函数重载测试,这个是String函数"...
有些书上也称“代表”或“委托”。      C#中取消了指针的概念。对指针恋恋不舍的程序员可以有两种解决方法:声明“非安全”(unsafe)代码段然后在其中使用指针或者使用C#的一个引用类型——“代理”(delegate)。“代理”相当与C中的函数指针原型,区别是C#是类型安全 的。
控制结阅与过程编程清浪冲天 马敬发 QQ: 283989349 E-mail: mjf150080@tom.com 有问题时,我们可以通过http://www.hustc.mpc.cn 这个论坛, 或 通过QQ 共同学习和讨论 一、控制结构 首先了解比较运算符: == 等于 >= 大于等于 大于 了解逻辑运算符: && 逻辑AND || 逻辑OR ! 逻辑NOT 警告:执行顺序是:! && || if...else...结构: 第...
介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认API在Windows编程中的重要性。大多数的编程语言都支持API编程,而.Net平台中的MFC(Microsoft Foundation Class Library)构架本身就封装了大部分的API。 做为程序员,...
在.net中,对英文语音有较好的支持,但是对中文语音的支持还没有加入进来,我们要想实现中文发音或中文语音识别,必需先安装微软的Speech Application SDK(SASDK),它的最新版本是 SAPI 5.1 他能够识别中、日、英三种语言,你可以在这里下载:http://www.microsoft.com/speech/download/sdk51/,需要安装这两个文件Speech SDK 5.1和5.1 Lan...