欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

C#引用类型和值类型的适用场合和区别

来源:本站原创|时间:2020-01-10|栏目:C#教程|点击:

1.值类型

值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。

值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放。

所有的值类型都是密封(seal)的,所以无法派生出新的值类型。

2.引用类型

引用类型包括:数组,用户定义的类、接口、委托,object,字符串,null类型,类。

引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被CLR中的垃圾回收机制释放。 

CLR常用简写词语,CLR是公共语言运行库(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。

3.值类型与引用类型区别:

4.适用场合:

值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。

引用类型可以派生出新的类型,而值类型不能,因为所有的值类型都是密封的。

引用类型可包含null值,值类型不能(可空类型功能允许将null赋给值类型,如int a=null);

引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值

5.装箱和拆箱

1)装箱就是将一个值类型转换成等值的引用类型

在堆上为新生成的对象(该对象包含数据,对象本身没有名称)分配内存。

将堆栈上值类型变量的值拷贝到堆上的对象中。

将堆上创建的对象的地址返回给引用类型变量(从程序员角度看,这个变量的名称就好像堆上对象的名称一样)。

2)拆箱就是将一个引用类型转换成等值的值类型

将引用类型变量堆上的值拷贝到栈上面。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

上一篇:C#实现剪刀石头布游戏

栏    目:C#教程

下一篇:C#应用ToolStrip控件使用方法

本文标题:C#引用类型和值类型的适用场合和区别

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/4951.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有