在代码中每创建一个变量,程序运行时都会在内存开辟一些空间存储这些值,所以写程序时创建的变量是越少越好(不积小流,无以成江海 -荀子)…

存储方式:
“值类型”存储于内存中的“”上
"引用类型"存储于内存中的“”上
静态类及变量存储于内存中的“静态存储区

值类型有哪些?
int"整数"
double"高精度小数"
char(单字符)
decimal(小数)
bool(布尔)
enum(枚举)
struct(结构)
等等…

引用类型有哪些?
string
数组
自定义类
集合
object
接口
等等…

值类型内存分配:
值类型是存储于栈上
int i =50;

其中的0x2489(并非固定值)表示内存中的地址,并把50存储在里面,值改变时内存地址并不会变化,而是直接原值覆盖,这是值类型的内存分配


如果按下面写内存该怎么分配,开辟新空间,还是同时指向一个内存
int a =20;
int b =a;

两个地址不是相同的,说明是开辟了新空间


引用类型内存分配:

引用类型存储于堆,

string s =“富强民主”;

栈的地址指向了在堆中的地址

其中字符串(string)比较特殊,字符串每重新赋值,并不会覆盖原值,而是开辟新空间存储
string a =“富强民主”;
a=“文明和谐”;
a=“自由平等”;


string a = “1”;
a = “2”;
a = “3”;
a = “4”;

可以看出每一次堆的地址都改变了,都开辟了新的内存,并不是覆盖


string a =“123”;
string b =“123”;
因为内容相同,他在堆中用的是同一块内存


栈中的地址 0X0058ee98
堆中的地址 0X027c233c
可以看出 a 和 b 的地址是一样的,说明指向的是同一块内存


如果其中有一个值方式变化则会开辟新空间
string a = “123”;
string b = “123”;
b = “6”;

堆中地址发生改变

静态存储区:
静态存储区,分别存放静态类或者方法,被static关键字修饰的都存储于静态存储区,他们在程序运行时即开辟空间,程序关闭时才会释放内存, 被stat修饰可以通过对象名进行调用而不用实例化,还有常量等,常量也就是不会变的值,值并不会发生改变,也存储于这个区域

纯手打,点个赞呗~

C# “值类型“和“引用类型“在内存的分配相关推荐

  1. Swift 值类型和引用类型的内存管理

    1.内存分配 1.1 值类型的内存分配 在 Swift 中定长的值类型都是保存在栈上的,操作时不会涉及堆上的内存.变长的值类型(字符串.集合类型是可变长度的值类型)会分配堆内存. 这相当于一个 &qu ...

  2. 第八回:品味类型---值类型与引用类型(上)-内存有理

    第八回:品味类型---值类型与引用类型(上)-内存有理 http://www.cnblogs.com/anytao/archive/2007/05/23/must_net_08.html 发布日期:2 ...

  3. [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

    本文将介绍以下内容: 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 1. 引言 买了新本本,忙了好几天系统,终于开始了对值类型和引用类型做个全面的讲述了,本系列开篇之时就是因 ...

  4. 【转】[你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理...

    引用自:http://www.cnblogs.com/anytao/category/155694.html 作者:Anytao 本文将介绍以下内容: 类型的基本概念 值类型深入 引用类型深入 值类型 ...

  5. 理解C#值类型与引用类型(收藏)

    从概念上看,值类型直接存储其值,而引用类型存储对其值的引用.这两种类型存储在内存的不同地方.在C#中,我们必须在设计类型的时候就决定类型实例的行为.这种决定非常重要,用<CLR via C#&g ...

  6. C#值类型和引用类型的不同

    1 C#中有两种类型:   值类型和引用类型:      值类型的变量直接包含他们的数据,引用类型存储对他们的数据的引用,后者称为对象:      简单说:值类型直接存储其值,引用类型存储对值得引用. ...

  7. C# 值类型与引用类型(1)

    1. 主要内容 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 2. 基本概念 C#中,变量是值还是引用仅取决于其数据类型. C#的基本数据类型都以平台无关的方式来定义,C#的 ...

  8. C#基础(四)--值类型和引用类型,栈和堆的含义

    本文主要是讨论栈和堆的含义,也就是讨论C#的两种类据类型:值类型和引用类型: 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型. 引用类型如:string,Obje ...

  9. 浅谈C#值类型和引用类型

    首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long ...

最新文章

  1. c++ 读取txt文件保存到vect
  2. 七十六、 数据结构二叉树及其代码实现
  3. c++动态内存管理题目
  4. mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...
  5. xss植入_网站xss漏洞的利用过程
  6. html代码大全(很全的)_HTML教学(1):写一个属于自己的网址大全(新手版)
  7. php url参数用–,php获取URL各部分参数
  8. Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
  9. 【报错】table burner has no column named USER (code 1): , while compiling: INSERT INTO burner(USER,YELL
  10. idea重写接口没有@override_1.重载和重写的区别
  11. Java后台快速开发框架
  12. 超能竞速大开眼界,iQOO 5系列正式发布
  13. 大数据经典实验案例-WordCount原理详解和代码书写
  14. Imitate_ProcessRR轮盘调度
  15. 网络SSID是什么意思
  16. 华为手机nova计算机怎么找过程,华为nova手机拆机全过程 华为nova真机拆解图解教程...
  17. 字节跳动李航入选ACL Fellow,他曾这样看待机器学习
  18. thymeleaf遇到的问题01
  19. 苹果一体机安装windows7教程
  20. 华为认证到底值不值得考?

热门文章

  1. 利用爬虫下载上交所和深交所年报并分析委托贷款情况
  2. 02 C#截图操作(几种截图方法)
  3. 盘点:华为手机音量键功能大全,你确定你都会使用?快来科普吧
  4. python动态库反初始化_【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...
  5. 国产RPA首登Gartner竞争格局报告,你更需要关注中国RPA市场
  6. MTSEA,2732568-75-9可修饰游离半胱氨酸残基
  7. 【有利可图网】设计师必看的毛笔字创作技巧
  8. Buff/Debuff种类区分
  9. 王者荣耀换了手机登录找不到以前的服务器,王者荣耀:换了手机找不到以前的大区要如何?要这样!...
  10. vscode+html文字颜色,VS Code转换大小写、修改选中文字或代码颜色的方法