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
相关推荐
EIP低代码平台3 小时前
EIP 低代码平台 - 角色维护
低代码·c#·权限·工作流·netcore
心平气和量大福大8 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
-银雾鸢尾-12 小时前
C#中HashTable相关方法
开发语言·c#
geovindu16 小时前
CSharp: Flyweight Pattern
开发语言·后端·c#·.net·享元模式·结构型模式
吴可可12316 小时前
C# CAD二次开发中如何退出窗口
c#
影寂ldy16 小时前
C# WinForm 三种自定义控件 + 完全自定义重绘控件知识点
开发语言·c#
ellis197016 小时前
C#异常相关关键字:Exceptions,throw,try,catch,finally
unity·c#
-银雾鸢尾-16 小时前
C#中的Dictionary相关方法
开发语言·c#
lzhdim17 小时前
C# 中读取CPU、硬盘和内存温度
开发语言·c#
WarPigs18 小时前
.NET项目app.Config笔记
c#·.net