既然C#里一切都是对象,又为什么会有装箱操作?

 我来答
百度网友1b491e1
2012-05-30 · TA获得超过1036个赞
知道小有建树答主
回答量:497
采纳率:0%
帮助的人:542万
展开全部
正是因为那句话,他才存在装箱操作。他需要把不是对象的玩意封成对象给你用

首先对象不是天然存在的,他是人为包装的。那那些天然存在的怎么办。微软说,我只好临时把他包装一下了。

再深入一点,为什么会有天然存在的东西呢?因为目前的计算机都是在冯诺依曼体系下的玩意,这个微软也无法颠覆,所以底层动不了,只好在上面在封一层了
追问
您说的跟楼下的说的不太一样,不知道你们谁说的对呢?
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
Ben
2012-05-30 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
在程序设计中,值类型实例到对象的转换,它暗示在运行时实例将携带完整的类型信息,并在堆中分配。Microsoft 中间语言 (MSIL) 指令集的 box 指令,通过复制值类型,并将它嵌入到新分配的对象中,将值类型转换为对象。
装拆箱以后引用类型就会与自己原本的对象之间的引用关系丢失..

如果你是一个做架构的.应该会注意这些东西.变量的引用与值类型.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xinli20
2012-05-30
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
C#里不是一切都是对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
6584422
2012-05-30 · TA获得超过1754个赞
知道小有建树答主
回答量:157
采纳率:100%
帮助的人:87.5万
展开全部
c#的两大数据类型分别为值类型和引用类型。
1. 值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例数据的内存引用。 因此,一个值类型变量就永远不会影响到其他的值类型变量,而两个引用类型变量则很有可能指向同一地址,从而发生相互影响。

2. 从内存分配上来看,值类型通常分配在线程的堆栈上,作用域结束时,所占空间自行释放,效率高,无需进行地址转换,而引用类型通常分配在托管堆上,由 GC 来控制其回收,需要进行地址转换,效率降低,这也正是c#需要定义两种数据类型的原因之一。

3. 值类型均隐式派生自 System.ValueType,System.ValueType 又直接派生于 System.Object, 而每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,注意所有的值类型都是密封(sealed)的,所以无法派生出新的值类型。而且System.ValueType 本身是一个类类型,而不是值类型,因为它重写了 object 的 Equals()方法,所以对值类型将按照实例的值来比较,而不是 比较引用地址。

4.C# 的统一类型系统,使得值类型可以转化为对象来处理,这就是常说的装箱和拆箱。由于装拆箱需要装建全新对象或做强制类型转换,这些操作所需时间和运算要远远大于赋值操作,因此不提倡 使用它,同时也要尽量避免隐式装拆箱的发生。 注:栈是操作系统分配的一个连续的内存区域,用于快速访问数据。因为值类型的容量是已知的,因此它 可存储在栈上。而托管堆是 CLR 在应用程序启动时为应用程序预留的一块连续内存区,是用于动态内存分 配的内存区,引用类型的容量只有到运行时才能确定,所有用堆来存储引用类型。
更多追问追答
追问
如您第3条所述,值类型均隐式派生自 System.ValueType,那么它应该是一个对象啊,只是System.ValueType重写了object 的Equals()方法,所以对值类型将按照实例的值来比较,这么想来还是不太明白呢
追答
其实不难理解

他这里意思是说,他重写了Equals()方法,那么他就是“值比较”,而非“引用比较”。

这值比较和引用比较你应该理解吧?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式