当前位置: 首页 > article >正文

C#区分值类型和引用类型【一文读懂】

目录

C#区分值类型和引用类型

1. 存储位置

2. 数据类型

3. 赋值

4. 默认值

5. 内存管理


       本篇文章来分享一下C#的值类型和引用类型,主要从存储位置,数据类型,赋值,默认值,内存管理5个方面进行区分。

C#区分值类型和引用类型

1. 存储位置

1)值类型:在栈上分配内存。存储的是数据本身

2)引用类型:在堆上分配内存。存储的是数据的引用(内存地址)

2. 数据类型

1)值类型:byte,short,int,long,float,double,decimal,bool,char,struct,enum

2)引用类型:string字符串,数组,class类,interface接口,delegate委托

3. 赋值

1)值类型:赋值时复制数据。修改一个变量不会影响其他变量

2)引用类型:赋值时复制引用。修改对象会影响所有引用该对象的变量

//值类型
int a = 5;
int b = a; //复制值
b = 10; //a仍为5

//引用类型
int[] arr1 = new int[] { 666 };
int[] arr2 = arr1;
arr1[0] = 888;
Console.WriteLine(arr2[0]);//888

4. 默认值

1)值类型:默认值为该类型的零值(如 0、false)

2)引用类型:默认值为 null,表示没有指向任何对象

5. 内存管理

1)值类型:不需要垃圾回收,通常更轻量

2)引用类型:由垃圾回收机制管理,可能导致更高的内存开销

总结而言,值类型更适合存储小型数据,而引用类型适合处理复杂对象。

       好了,本次的分享到这里就结束啦,希望对你有所帮助~


http://www.kler.cn/a/312936.html

相关文章:

  • 关于QUERY_ALL_PACKAGES权限导致Google下架apk
  • 【HarmonyOS Next】数据本地存储:@ohos.data.preferences
  • Python 分子图分类,GNN Model for HIV Molecules Classification,HIV 分子图分类模型;整图分类问题,代码实战
  • selenium大量并发连接驱动超时
  • 代码随想录训练营Day20 | 93.复原IP地址 - 78.子集 - 90.子集II
  • python可视化进阶
  • 第十三周:机器学习笔记
  • 【开发语言】写程序的两大基本原则(PO和NT原则)
  • three.js 热力图
  • Android Perfetto 学习
  • 聚焦于 Web 性能指标 TTI
  • 2024新动态:低代码开发占领新常态市场
  • ImportError: DLL load failed while importing _ssl: 找不到指定的模块的解决方法
  • man 命令:查看命令的帮助信息
  • 【学习资料】袋中共36个球,红白黑格12个,问能一次抽到3个红4个白5个黑的概率是多少?
  • 封装一个录音声音振动效果的组件
  • foc原理odrive驱动板的使用,以及功能介绍
  • 基于TRIZ的救援机器人轻量化设计
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述
  • 翻唱技巧:AU和Cubase翻唱录制对轨技巧
  • Linux 系统进程理解——标识符,状态
  • uniapp中使用echarts 完整步骤,包括报错以及解决方案
  • 实验一:Windows下的IIS服务器配置和管理
  • 50页PPT麦肯锡精益运营转型五步法
  • 考研报名确认上传身份证户口本学历证明照片如何压缩裁剪
  • 聊聊Thread Local Storage