• 全部
...

为什么要进行装箱和拆箱行为

fffxixi 2013-10-24 11:25:16
以前没有留意这种基础,只知道装箱是将值类型转换为引用类型。拆箱就是将引用类型转换为值类型。
为什么要进行装箱和拆箱行为呢?
谢谢!
...全文
给本帖投票
1475 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
魂之挽歌来袭 2013-10-25
  • 打赏
  • 举报
回复
引用 13 楼 linrachel 的回复:
装箱跟封装是一个意思么。。。
装箱怎么会是封装。。。
  • 打赏
  • 举报
回复
引用 13 楼 linrachel 的回复:
装箱跟封装是一个意思么。。。
怎么楼上几位好像都是这么理解的,装箱就是把属性装到类里面。。。。
threenewbee 2013-10-25
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
楼主看到没,哥给你造势炒作你这个帖子红了,记得给哥点辛苦分哈。
  • 打赏
  • 举报
回复
以后这类问题都这样解释: 装箱转换是指将一个值类型隐式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object. C#装箱和拆箱正好相反,拆箱转换是指将一个对象类型显式转换成一个值类型,或是将一个接口类型显式转换成一个执行该接口的值类型.拆箱的过程分为两步,首先,检查这个对象实例,看它是否为给定的值类型的装箱值,然后,把这个实例的值拷贝给值类型的变量.
linrachel 2013-10-25
  • 打赏
  • 举报
回复
装箱跟封装是一个意思么。。。
threenewbee 2013-10-25
  • 打赏
  • 举报
回复
就好比我上学的时候有次英语考试选择题8题只对了2题,我朋友说,你还不如瞎蒙呢。我承认我付出了劳动和诚意,但是结果真的不比瞎蒙强。我不觉得受到了诋毁。
threenewbee 2013-10-25
  • 打赏
  • 举报
回复
引用 23 楼 abcmsnet 的回复:
只能说站在我的立场上我认为那个解释还是可以的,但是被人说是胡扯,我感觉很委屈,我认为我并没有故意乱说一通或者说些不粘编辑的话。我觉得你可以说你解释的不到位,直接说人胡扯,大部分都不会接受的,最多能说我的解释和举例比较勉强和错误,你说胡扯,明显有诋毁别人的意思。
反正我说的是你跑题了,以及比胡扯好不了太多。
  • 打赏
  • 举报
回复
只能说站在我的立场上我认为那个解释还是可以的,但是被人说是胡扯,我感觉很委屈,我认为我并没有故意乱说一通或者说些不粘编辑的话。我觉得你可以说你解释的不到位,直接说人胡扯,大部分都不会接受的,最多能说我的解释和举例比较勉强和错误,你说胡扯,明显有诋毁别人的意思。
  • 打赏
  • 举报
回复 1
.net中有两种类型,值类型和引用类型。 有时候值类型需要在只接收引用类型的场合使用,这时候就得装箱。反之,则要拆箱。 那干脆一种类型统一不就行了。 如果都用引用类型,堆上的处理速度慢,性能不好。 如果都用值类型,甚好,但可怜的1M用户栈哪能容得下所有的数据。 于是,平衡处理,就出现了现在的这种局面。值类型与引用类型并存,常用且轻量级的数据结构作为值类型,其他作为引用类型。然后通过拆装箱的机制实现不同场合的通用。
threenewbee 2013-10-25
  • 打赏
  • 举报
回复
引用 21 楼 abcmsnet 的回复:
我在做C/S程序的时候,我有一大堆各种类型的数据需要传输到另一方,于是我就把这些各种数据类型打包成类,然后类序列化发送到另一方,另一方接受到数据包再转换成类。这难道不可以解释为封包拆包的理论吗,为什么说是胡扯,真不明白、
因为装箱拆箱是专有名词。你不能把放火烧车解释成火车,或者运轮胎的船叫做轮船。
  • 打赏
  • 举报
回复
我在做C/S程序的时候,我有一大堆各种类型的数据需要传输到另一方,于是我就把这些各种数据类型打包成类,然后类序列化发送到另一方,另一方接受到数据包再转换成类。这难道不可以解释为封包拆包的理论吗,为什么说是胡扯,真不明白、
threenewbee 2013-10-25
  • 打赏
  • 举报
回复
引用 19 楼 abcmsnet 的回复:
[quote=引用 17 楼 caozhy 的回复:] [quote=引用 16 楼 abcmsnet 的回复:] [quote=引用 7 楼 wddw1986 的回复:] 2楼就是在胡扯,希望大家过滤掉才好。
请楼主和大家注意此人,职业灌水的,技术水平极差,靠打嘴炮灌水混经验,打击职业灌水,从我们做起。顶[/quote] 说实话,你2L的回答真的不比胡扯好多少。想来你有自知之明,点到即可,没想到自己还跳出来。[/quote] 我无话可说了,这就是版主的德行,宁愿灌水也不让我们这些人说点真话。[/quote] 要不让你说,早就删除了。你有站在你的立场说真话的权利,但是别人也有站在他的立场说真话的权利,包括指出你说的不对的权利。
  • 打赏
  • 举报
回复
引用 17 楼 caozhy 的回复:
[quote=引用 16 楼 abcmsnet 的回复:] [quote=引用 7 楼 wddw1986 的回复:] 2楼就是在胡扯,希望大家过滤掉才好。
请楼主和大家注意此人,职业灌水的,技术水平极差,靠打嘴炮灌水混经验,打击职业灌水,从我们做起。顶[/quote] 说实话,你2L的回答真的不比胡扯好多少。想来你有自知之明,点到即可,没想到自己还跳出来。[/quote] 我无话可说了,这就是版主的德行,宁愿灌水也不让我们这些人说点真话。
PaulyJiang 2013-10-25
  • 打赏
  • 举报
回复
你买了100斤大米为什么要用袋子装呢?为什么不一个个拿回去?
jiaoshiyao 2013-10-25
  • 打赏
  • 举报
回复
没装箱拆箱 貌似做不出来现在的应用吧
明缘 2013-10-25
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
道理很简单,按理说C#被设计成一种完全面向对象的语言。因此,包括数字、字符、日期、布尔值等等在内的一切,都是对象。似乎只需要一种方式来对待这些对象就可以了。 但是C#不是只停留在学院中和理想中,它必须为性能而妥协,我们知道,对于CPU来说,处理一个完整的对象,需要很多的指令,对于内存来说,又需要很多的内存。如果连整数都是对象,那么性能自然很低。C#于是使用了一种机制,使得这些基本类型在一般的编程中被当作非对象的简单类型处理,在另一些场合,又允许它们被视作是一个对象。这种机制就是装箱和拆箱。 装箱后的对象看上去和一个对象一样,拥有方法,可以当作object处理,拆箱后的变量,看上去又如同C语言中的那些变量、结构体一样,可以直接参与运算和处理。
说的不错。
异常异长 2013-10-25
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
道理很简单,按理说C#被设计成一种完全面向对象的语言。因此,包括数字、字符、日期、布尔值等等在内的一切,都是对象。似乎只需要一种方式来对待这些对象就可以了。 但是C#不是只停留在学院中和理想中,它必须为性能而妥协,我们知道,对于CPU来说,处理一个完整的对象,需要很多的指令,对于内存来说,又需要很多的内存。如果连整数都是对象,那么性能自然很低。C#于是使用了一种机制,使得这些基本类型在一般的编程中被当作非对象的简单类型处理,在另一些场合,又允许它们被视作是一个对象。这种机制就是装箱和拆箱。 装箱后的对象看上去和一个对象一样,拥有方法,可以当作object处理,拆箱后的变量,看上去又如同C语言中的那些变量、结构体一样,可以直接参与运算和处理。
解释不错
cheng2005 2013-10-25
  • 打赏
  • 举报
回复
2楼就是在胡扯,希望大家过滤掉才好。
qq874655551 2013-10-25
  • 打赏
  • 举报
回复
为了类型转换 就像他爷可以代替他说话,但他代替不了他爷说话。因为等级不一样
加载更多回复(8)

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部