博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 引用类型和值类型
阅读量:6982 次
发布时间:2019-06-27

本文共 492 字,大约阅读时间需要 1 分钟。

1、引用类型

FCL(Framework)中的大多数类型都是引用类型,引用类型总是在托管堆中分配的,C#的new操作符会返回对象的内存地址,也就是指对象数据的内存地址。在使用引用类型时,存在以下性能问题,这是我们在开发中必须要注意的:

a、内存必须从托管堆上分配(也就是说每new一个对象,会占用内存,对象过多就会导致内存占用)

b、 堆上分配的每个对象都有一些额外的成员,这些成员必须初始化

c、对象中的其他字节(为字段而设),总是设为0

d、从托管堆中每分配一个对象,可能强制执行一次垃圾回收操作

所以当我们的应用程序中都是引用类型时,应用程序的性能会显著下降。

 

2、值类型

上面介绍了引用类型,知道了当从托管堆中每分配一个对象时,都会造成应用程序性能的下降。设想当使用Int32类型初始化一个数字6或者使用float初始化一个浮点数6.6的时候,都进行一次内存的分配,那么应用程序的性能会受到严重的影响.为了提供应用程序的性能,CLR提供了名为"值类型"的轻量级类型.

转载于:https://www.cnblogs.com/GreenLeaves/p/7506941.html

你可能感兴趣的文章
LayaAir疑难杂症之四:laya引擎自动断点到bundle.js文件中且无报错,但程序不再执行...
查看>>
元组操作
查看>>
mysql官方下载
查看>>
输入:一行数据空格隔开
查看>>
【Swift】UILabel 设置内边距
查看>>
Swift值类型和引用类型的内存储存情况
查看>>
pyhon简单比较文本相似度的方法
查看>>
web前端整套面试题(二)--今日头条面试题
查看>>
一些东西,复制
查看>>
bi api 软件
查看>>
WPS客户端更新日志留着备用
查看>>
c#获取电脑硬件信息参数说明(内存篇 Win32_PhysicalMemory)
查看>>
LeetCode算法题-Balanced Binary Tree(Java实现)
查看>>
Cocos2dx 3.1.1 将一个2.X的项目改成3.1版本
查看>>
12.12冲刺~!
查看>>
sql知识
查看>>
spring boot
查看>>
核心动画(转场动画和组动画)
查看>>
数的全排列
查看>>
2015年最新手机号码正则表达式
查看>>