几个c#的概念,望高手解答

carl9081 2007-11-08 10:39:58
值类型、引用类型、堆栈、封箱、拆箱

哪位能帮我详细解答一下,谢谢!
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LH58 2007-11-08
  • 打赏
  • 举报
回复
值类型:
(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据。其在MSDN的定义为值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。我们由上图可知,值类型主要包括简单类型、结构体类型和枚举类型等。通常声明为以下类型:int、char、float、long、bool、double、struct、enum、short、byte、decimal、sbyte、uint、ulong、ushort等时,该变量即为值类型。
引用类型:
(Reference Type),引用类型实例分配在托管堆(managed heap)上,变量保存了实例数据的内存引用。其在MSDN中的定义为引用类型存储对值的内存地址的引用,位于堆上。我们由上图可知,引用类型可以是自描述类型、指针类型或接口类型。而自描述类型进一步细分成数组和类类型。类类型是则可以是用户定义的类、装箱的值类型和委托。通常声明为以下类型:class、interface、delegate、object、string以及其他的自定义引用类型时,该变量即为引用类型。
栈区:
(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
堆区:
(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
装箱,拆箱:
值类型实例到对象的转换,它暗示在运行时实例将携带完整的类型信息,并在堆中分配。Microsoft 中间语言 (MSIL) 指令集的 box 指令,通过复制值类型,并将它嵌入到新分配的对象中,将值类型转换为对象拆箱:
XMUMEEameng 2007-11-08
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20040103/05/2628435.html
GoodType 2007-11-08
  • 打赏
  • 举报
回复
http://bbs.langsin.com/viewthread.php?tid=1925&extra=page%3D1
这里全都讲有
xcjwxx 2007-11-08
  • 打赏
  • 举报
回复
up
liujb526 2007-11-08
  • 打赏
  • 举报
回复
装箱:就是把值类型转换为引用类型
例:
int i=2;
object o=i;

拆箱:就是把引用类型转换为值类型
例:
int i=2;
object o=i;
int j=(int)o;

建议楼主看看《C#高级编程》
基础概念讲的很详细

110,566

社区成员

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

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

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