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
相关推荐
hez20101 小时前
在 .NET 上构建超大托管数组
c#·.net·.net core·gc·clr
雨落倾城夏未凉5 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫6 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫7 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6258 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902118 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠8 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫10 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech11 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf12 天前
C#摸鱼实录——IoC与DI案例详解
c#