C#语法基础 (二)数据类型

一、数据类型分类

值类型(Value Types)

  • 直接存储数据本身,分配在‌栈内存

  • 包括:

  • 简单类型‌:整数(int/byte等)、浮点(float/double)、布尔(bool)、字符(char

  • 结构类型‌:struct定义的自定义复合类型

  • 枚举类型‌:enum定义的命名常量集合

引用类型(Reference Types) 

  • 存储数据的内存地址,数据本身在‌堆内存

  • 包括:

  • 类(class)、接口(interface)、数组(int[]等)

  • 特殊内置类型:string(不可变字符串)、object(所有类型基类)

  • 动态类型:dynamic(运行时类型检查)

 ‌二、值类型 vs 引用类型核心差异 

特性值类型引用类型
存储位置栈内存堆内存(栈存引用地址)
赋值行为复制完整数据(独立副本)复制引用(共享同一对象)
默认值各类型预设(如int默认为0)null
内存管理作用域结束自动释放由垃圾回收器(GC)管理

 三、常用数据类型详解

整型

byte b = 255;          // 无符号8位(0~255)
int i = -2147483648;   // 有符号32位
long l = 9223372036854775807L; // 64位需加L后缀

浮点型

float f = 3.14f;       // 单精度(需f后缀)
double d = 3.1415926;  // 双精度(默认)

布尔与字符

bool flag = true;      // 仅true/false
char c = 'A';          // Unicode字符(单引号)

字符串

string s1 = "Hello";   // 不可变引用类型
string s2 = @"C:\Path"; // 逐字字符串(忽略转义)

四、类型转换机制

隐式转换

小范围类型→大范围类型自动转换(如intlong

int num = 100;
long bigNum = num; // 自动转换

显式转换

强制类型转换或使用Convert

double pi = 3.14;
int intPi = (int)pi; // 截断小数部分

装箱与拆箱

值类型与object间转换

int x = 123;
object obj = x;     // 装箱(值→引用)
int y = (int)obj;   // 拆箱(引用→值)

 注意:

  1. 值类型适合小型高频访问数据,引用类型适合复杂对象
  2. 字符串操作优先使用StringBuilder避免频繁内存分配
  3. 使用var隐式类型推断需确保初始化表达式类型明确

如需测试类型尺寸,可用sizeof方法:

Console.WriteLine($"int大小: {sizeof(int)}字节"); // 输出4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值