C#中装箱 开箱什么意思
答案:4 悬赏:20 手机版
解决时间 2021-04-21 08:34
- 提问者网友:缘字诀
- 2021-04-20 21:37
C#中装箱 开箱什么意思
最佳答案
- 五星知识达人网友:毛毛
- 2021-04-20 21:48
装箱与开箱
难道C#也是两种不同的数据类型吗?不是。那它是怎么实现类型兼容的呢?那就是“装箱”(boxing)来实现的。最简单的理解就是:装箱就是将数值类型转换为引用类型。相对应的就是引用类型通过“开箱”转换为数值类型。
这项技术之所以如此“伟大”,是因为一个对象在它需要是一个对象的时候,它就仅仅是一个对象。比如:如果您声明了一个System.int32类型的数值类型变量。您可以把它作为参数传递给任何方法,如果该方法的参数类型定义为System.Object,系统会自动执行装箱操作,将它转变成一个Object。对于程序员来说,它和普通的数据类型一样,但可以当作对象来操作。但事实上它只是堆栈上的4个字节而已。如:
int temp = 58; //数值类型
System.Object bar = temp; //temp 被执行装箱操作转变成 对象类型 bar 这是编译器就生成该值装箱所需的MSIL代码。
现在,要把bar转换为数值类型,就可以执行一个显示转换。
int temp = 58;
System.Object bar = temp;
int temp2 = (int)bar;
注意:装箱就是将数值类型转换成引用类型。
开箱就是将引用类型转换成数值类型。(需指明被转换的类型,因为它可以被转换成任何类型)
来源: http://www.unjs.com/amathematics2/sx/amathematics2_11419.html
全部回答
- 1楼网友:逃夭
- 2021-04-20 23:42
就是把引用类型和值类型之间的转换称为装箱拆箱
- 2楼网友:慢性怪人
- 2021-04-20 23:30
拆箱是把“引用”类型转换成“值”类型;
装箱是把“值”类型转换成“引用类型”;
原因是有时某些方法的参数要求使用“引用”类型,而你想把“值”类型的变量通过这个参数传入,就需要使用
这个操作。
- 3楼网友:怙棘
- 2021-04-20 23:18
C# 中的数据类型都是从 System.Object 类中派生出来的,而且利用了"装箱"和"开箱"的技术。
"装箱"和"开箱"的意思很简单,请看示例:
int myint = 5;///值类型
object har = myint; //myint 装箱到 har
在上面代码的第一行,我们创建了int类型的变量 myint. int 类型是一种数值类型(因为它是一种基本类型).在第二行,编译器看到变量 myint 被复制到一个叫做 har的引用类型变量.这时编译器就生成将这个值装箱所需的MSIL代码.
现在,要将 har转换为数值类型,就可以执行一个显式转换:
int myint = 5;//值类型
object har = myint;//装箱
int myint2 = (int) har;//开箱
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯