对象,数字
理解 C# 通用类型系统与值类型 / 引用类型的区别
掌握所有数字类型的特点与适用场景
熟练进行数字运算与类型转换
核心讲解
C# 是纯面向对象语言,所有类型都派生自 object 根类。大类型上分为两大类:
值类型:存栈上,复制值,包括:数字、结构体、枚举、元组
引用类型:存堆上,复制引用,包括:string、类、接口、数组、委托
(1)常用数字类型(值类型)
表格
类型 | 含义 | 大小 | 默认值 | 适用场景 |
|---|---|---|---|---|
| 整数 | 4 字节 | 0 | 最常用,计数、索引、普通数值 |
| 长整数 | 8 字节 | 0L | 大整数、ID、时间戳 |
| 单精度浮点数 | 4 字节 | 0.0f | 图形、一般小数 |
| 双精度浮点数 | 8 字节 | 0.0d | 科学计算、通用小数 |
| 高精度十进制 | 16 字节 | 0.0m | 金融、货币、高精度计算 |
| 无符号字节 | 1 字节 | 0 | 文件、二进制数据 |
(2)基本运算符
算术:
+-*/%++--赋值:
=+=-=*=/=比较:
==!=><>=<=
(3)类型转换
隐式转换:小范围 → 大范围,自动完成,无风险,如
int→long→double显式转换(强制转换):大范围 → 小范围,需强转,可能损失精度,语法:
(类型)值字符串转数字:
int.Parse()、double.Parse()、decimal.Parse()
操作步骤
在现有项目的
Program.cs中编写数字变量与运算代码按
Ctrl+F5运行(不调试启动)观察输出结果,验证运算与转换逻辑
代码示例
// 整数类型
int age = 25;
long id = 100000000000L; // long后缀加L
// 浮点类型
double price = 19.99;
decimal money = 99.99m; // decimal后缀加m,金融场景必须用
// 基本运算
int a = 10;
int b = 3;
Console.WriteLine("加法:" + (a + b));
Console.WriteLine("整数除法:" + (a / b)); // 3,整数相除截断小数
Console.WriteLine("浮点除法:" + (a / (double)b)); // 3.333...
// 强制类型转换
double num = 3.99;
int intNum = (int)num; // 截断小数,结果3
Console.WriteLine("强制转int:" + intNum);
// 字符串转数字
string numStr = "12345";
int n = int.Parse(numStr);
Console.WriteLine("字符串转int:" + (n + 10));
Console.ReadKey();
常见误区
decimal 不加 m 后缀:
decimal d = 3.14会编译报错,小数默认是 double,必须加m整数除法忘记转浮点:两个 int 相除默认截断小数,需要至少一个转成浮点类型
Parse 转换失败:字符串格式不对会抛异常,进阶可用
int.TryParse()安全转换忽略溢出:强制转换超过范围会溢出,结果错误,可用
checked关键字检查
课后练习
定义 int、double、decimal 三种变量,赋值并打印
用 decimal 计算半径为 5 的圆面积(π 取 3.1415926)
将字符串 "88.88" 转成 double 和 decimal,分别加 10 输出
思考:为什么金融场景必须用 decimal 而不用 double?

