C# 数据类型:值类型与引用类型

一、数据类型分类

1、值类型,存储数据本身

类型 说明
int 32 位整数
long 64 位整数
short 16 位整数
byte 字节
bool 布尔值
double 双精度浮点
float 单精度浮点
decimal 高精度小数
char 单个字符
struct 结构体
enum 枚举

2、引用类型,存储地址

类型 说明
string 字符串
class 类
array 数组
object 所有类型的基类
interface 接口
delegate 委托

二、值类型

值类型=拷贝数据,值类型作为参数,方法接收到的时参数的副本:

cs 复制代码
static void Change(int x)
{
    x = 100;
}

int a = 10;
Change(a);
Console.WriteLine(a); // 10

三、引用类型

cs 复制代码
class User
{
    public int Age;
}

User u1 = new User { Age = 18 };
User u2 = u1;

u2.Age = 30;

Console.WriteLine(u1.Age); // 30

u1和u2指向同一块内存,修改的是同一个对象。

引用类型作为参数传递:这不是"引用传递",而是"地址的值被拷贝"

cs 复制代码
static void Change(User user)
{
    user.Age = 100;
}

User u = new User { Age = 18 };
Change(u);

Console.WriteLine(u.Age); // 100

四、值类型与引用类型对比

对比项 值类型 引用类型
存储内容 数据本身 数据地址
赋值行为 拷贝数据 拷贝地址
参数传递 值拷贝 地址值拷贝
性能 小对象快 大对象更合适
代表 int / struct string / class
相关推荐
曹牧9 小时前
C#:输入的字符串格式不正确
c#
根号五14 小时前
JetBrains Rider 使用教程(1)新建解决方案
c#·jetbrains rider
海天鹰15 小时前
C#:接收从打开方式打开的参数
c#
宝桥南山16 小时前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
开开心心_Every16 小时前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
波力海苔夹心脆67517 小时前
VisionPro 与 VisionMaster 对比(上):软件定位、开发环境与核心视觉工具对照
图像处理·算法·计算机视觉·c#·视觉检测·个人开发·vp9
疯狂戴夫冒险18 小时前
歇一会 · 久坐休息提醒工具(番茄钟)工具分享
c#
...62218 小时前
VisionMaster 测量模块工具
c#·visionmaster
samble1 天前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
人道领域2 天前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#