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
相关推荐
(initial)14 小时前
B-02. Shared Memory 深度优化:从 Bank Conflict 到 Tensor Core Swizzling
开发语言·c#
fdc201721 小时前
解耦的艺术:用责任链模式构建可插拔的文件处理流水线
c#·.net·责任链模式
bugcome_com21 小时前
【C# 数组详解】Array 定义、初始化、遍历、内存原理与面试高频问题
后端·c#·asp.net
小码编匠21 小时前
WPF 如何在 MVVM模式下实现 DataGrid编辑功能
后端·c#·.net
游乐码1 天前
c#扩展方法
开发语言·c#
qq_454245031 天前
基于ECS的工作流编排框架
数据结构·c#
qq_454245032 天前
BuildTemplateGraph 函数深度解析:动态节点图构建的架构设计与核心价值
数据结构·c#
qq_454245032 天前
SkeletonFlow:基于组合子逻辑与范畴论的数据流处理框架
数据结构·c#
游乐码2 天前
c#静态类和静态构造函数
开发语言·c#
net3m332 天前
自动分工 现象时,一共有几种可能得权重组合变化,如何确保这些组合的扫描时的不发生组合爆炸
人工智能·c#·ai编程