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
相关推荐
QfC92C02p4 小时前
C# 中的 Span 和内存:.NET 中的高性能内存处理
java·c#·.net
Yuri X-20215 小时前
VS2022实战测试题——2
程序人生·c#·个人开发·visual studio
公子小六6 小时前
基于.NET的Windows窗体编程之WinForms布局简介
windows·microsoft·c#·.net
zaim16 小时前
计算机的错误计算(二百二十六)
java·python·c#·c·错数·mpmath
William_cl6 小时前
[特殊字符]C# ASP.NET 架构封神之路:分层 + 仓储 + EFCore,写出企业级可维护代码!
架构·c#·asp.net
tq6J5Yg146 小时前
.NET 10 & C# 14 New Features 新增功能介绍-带修饰符的简单 lambda 参数
开发语言·c#·.net
fe7tQnVan7 小时前
从玩具到生产:基于 ChromaDB 打造工程级 RAG 系统
开发语言·c#
ySq0REx017 小时前
.NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进
开发语言·c#·.net
张人玉7 小时前
C#程序设计编程二维码识别程序
开发语言·c#·二维码
sR916Mecz7 小时前
JavaParser使用指南
开发语言·c#