永发信息网

C#中装箱 开箱什么意思

答案:4  悬赏:20  手机版
解决时间 2021-04-21 08:34
C#中装箱 开箱什么意思
最佳答案

装箱与开箱
难道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

全部回答
就是把引用类型和值类型之间的转换称为装箱拆箱
拆箱是把“引用”类型转换成“值”类型; 装箱是把“值”类型转换成“引用类型”; 原因是有时某些方法的参数要求使用“引用”类型,而你想把“值”类型的变量通过这个参数传入,就需要使用 这个操作。
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;//开箱
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样可以孤独地学习呢?
天下有没有不散的宴席
問問是什麽
北京物价高吗,长沙和沈阳哪个城市物价高
求鬼泣各武器详解(紫装和粉装)
表示郁闷的诗句有哪些,用什么诗句形容自己郁
谁知道扣肉怎么做!
为什么摩托和电动车相撞`摩托要负所有的责任?
一个被爱所困扰怎么办啊?
西安哪有兼职?大家帮忙推荐推荐,只能星期天工
单位给员工生日祝福语,员工生日贺词???
诺基亚5000是什么样的?
百越快捷宾馆地址在什么地方,想过去办事
请问保健食品的排名
北京顺义驾照丢了去哪补办?
推荐资讯
为什么搜索百度找不到网站
对电脑感兴趣的来看看
为什么车站卖的东西比别的地方卖的东西贵那么
为什么我的MP3插到电脑里,没有可移动磁盘了
为什么我的qq在好友买卖只显示QQ号(用手机的
国家计算机二级考些什么内容
爱一个人思念一个人能得到什么结果?
每个市的教材是一样的吗?
为什么去非洲工作的普通工人一年工资都能过十
DNF有没有什么好的项链?
东营到章丘有直达的长途汽车吗
地下城与勇士被盗了,钱找不回来!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?