• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
11
C#

值类型和引用类型

发表于 2022-04-11 • 字数统计 998 • 被 458 人看爆

概述

定义存储数据需要的内存大小及组成该类型的数据成员

值类型

需要单独的内存,用于存储数据。
如:int、long、float等。
由系统分配内存,在栈上

值类型.png

引用类型

需要两段内存
一段存储实际的数据,存在堆中
一段是一个引用,指向数据在堆中的存放位置
如:string、class

引用类型.png

区别

范围

  • C#的值类型包括:结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型。
  • C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。

内存方面

  • 数组的元素不管是引用类型还是值类型,都存储在托管堆上。
  • 引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。简称引用类型部署在托管推上。而值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;作为局部变量时,存储在栈上。

继承

  • 值类型继承自ValueType(注意:而 System. ValueType 又继承自 System.Object)
  • 引用类型继承自System.Object

表示

  • 值类型:装箱与拆箱
  • 引用类型:装箱

多态

  • 值类型不具有多态
  • 引用类型有多态

参考

  • 我不会Hello World-值类型和引用类型的区别
  • 软件工程小施同学-值类型和引用类型是什么区别
分享到:
参数
栈和堆
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,092次看爆
  • JAVA_HOME环境配置问题 3,741次看爆
  • AssetBundle使用 3,510次看爆
  • VSCode配置C++开发环境 3,264次看爆
  • Lua反射 3,142次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图