当前位置: 首页 > 面试题库 >

C#中什么是装箱和拆箱?

壤驷鸿祯
2023-03-14
本文向大家介绍C#中什么是装箱和拆箱?相关面试题,主要包含被问及C#中什么是装箱和拆箱?时的应答技巧和注意事项,需要的朋友参考一下

答:

装箱:把值类型转换成引用类型

拆箱:把引用类型转换成值类型

装箱:对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。

(1)第一步:新分配托管堆内存(大小为值类型实例大小加上一个方法表指针。

(2)第二步:将值类型的实例字段拷贝到新分配的内存中。

(3)第三步:返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用了。

拆箱:检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。

在装箱时是不需要显式的类型转换的,不过拆箱需要显式的类型转换。

int i=0;
System.Object obj=i; //这个过程就是装箱!就是将 i 装箱!
int j=(int)obj;//这个过程 obj 拆箱!
 类似资料:
  • 本文向大家介绍什么是装箱(boxing)和拆箱(unboxing)? (*)相关面试题,主要包含被问及什么是装箱(boxing)和拆箱(unboxing)? (*)时的应答技巧和注意事项,需要的朋友参考一下 Object是引用类型,但是它的子类Int32竟然不能去Object能去的“要求必须是引用类型” 的地方,违反了继承的原则,所以需要把Int32装在Object中才能传递。 装箱:从值类型接口

  • 本文向大家介绍浅析C# 装箱和拆箱,包括了浅析C# 装箱和拆箱的使用技巧和注意事项,需要的朋友参考一下 Object类型是所有类型的基类,其下面有ValueType类型。什么结构啊,枚举啊,都继承ValueType,这些都是值类型。其他的什么类啊,数组啊,字符串啊等等都是引用类型。 简单的说,直接继承Object的都是引用类型,继承ValueType的都是值类型。 那样的话,像整形这样的结构按理说

  • 本文向大家介绍C#装箱和拆箱原理详解,包括了C#装箱和拆箱原理详解的使用技巧和注意事项,需要的朋友参考一下 .NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种传递参数和赋值的通用方法。赋给object的值必须作为引用类型,并存放砸托管堆中。 装箱: int age = 24; object refAge= a

  • 问题内容: 我正在寻找一个清晰,简洁和准确的答案。 理想情况下,作为实际答案,尽管欢迎提供指向良好解释的链接。 问题答案: 装箱的值是对原始类型*进行最小包装的数据结构。装箱的值通常存储为指向堆上对象的指针。 因此,盒装值使用更多的内存,并且至少要进行两次内存查找才能访问:一次获取指针,另一次跟随该指针到达原语。显然,这不是您想要在内部循环中执行的操作。另一方面,带框值通常会与系统中的其他类型一起

  • 本文向大家介绍C# 装箱和拆箱的知识回顾,包括了C# 装箱和拆箱的知识回顾的使用技巧和注意事项,需要的朋友参考一下 装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的一个过程。 当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。 拆箱将从对象中提取值类型。 装箱是隐式的;拆箱是显式的。 装箱和拆箱的概念是类型系统 C#

  • 问题内容: 这不是什么是装箱和拆箱的问题,而是 为什么 Java和C#之类的语言需要这样做? 我对C ++,STL和Boost非常熟悉。 在C ++中,我可以很容易地编写这样的内容, 我对Java有一定的经验,但是我真的很惊讶,因为我不得不写这样的东西, 我的问题是,为什么它应该是一个对象,在谈到泛型时在技术上很难包含原始类型? 问题答案: 在谈到泛型时,从技术上讲很难包括原始类型吗? 在Java