C#引用类型和值类型的适用场合和区别-创新互联

1.值类型

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的惠济网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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

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

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

2.引用类型

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

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

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

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

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

4.适用场合:

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

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

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

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

5.装箱和拆箱

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

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

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

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

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对创新互联成都网站设计公司的支持。如果你想了解更多相关内容请查看下面相关链接

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:C#引用类型和值类型的适用场合和区别-创新互联
网站路径:http://scyanting.com/article/ddpdis.html