C# 字面量(Literals)的概念
前言
之前学习代码的时候,就一直学到的是变量,常量,这些常用的知识点,我在网上突然知道竟然还有字面量这个概念,虽然感觉用的次数不多,但却是在日常工作中 经常见到用到的东西
字面量都是一些不可改变的值
11 比如: 1 2 3 4 5
12 字面量都是可以直接使用,但是我们一般都不会直接使用字面量。
13 变量,变量可以用来保存字面量,而且变量的值是可以任意改变的
14 变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,
15 而很少直接使用字面量
16 通过变量对字面量进行描述
字面量(Literal)是代码中直接写出来的固定值。简单来说,就
是你在代码里写的实际数据,比如数字、字符、字符串等。C# 中常
见的字面量有整数、浮点数、字符、字符串和布尔值。
理解了!让我用更简单、更直观的方式解释 字面量(Literals),并对比变量和常量。
🌟 字面量(Literals):代码中的"裸值"
想象你在纸上直接写一个数字或单词,不标注它是什么,这就是字面量。
本质:直接在代码中写出的原始值,没有名字,不能修改。
关键特征:
-
没有名字
42就是42,"你好"就是"你好"——它们像无名氏 -
固定不变
3.14永远等于3.14,就像圆周率π的近似值不会自己改变 -
编译器自动识别类型
10 // 编译器知道这是 int "火" // 编译器知道这是 string true // 编译器知道这是 bool
常见字面量类型:
| 类型 | 示例 | 说明 |
|---|---|---|
| 整数 | 42, 0b1010, 0xFF |
二进制/十进制/十六进制 |
| 浮点数 | 3.14, 6.022e23 |
带小数点的数 |
| 字符 | 'A', '\n' |
单引号包裹的单个字符 |
| 字符串 | "Hello", @"C:\" |
双引号包裹的文本 |
| 布尔 | true, false |
逻辑值 |
| null | null |
空引用 |
🔄 对比:字面量 vs 变量 vs 常量
情景类比:超市商品
// 字面量 → 商品本身
"苹果" // 就是一个苹果(没有标签)
// 变量 → 带标签的货架
string 水果 = "香蕉"; // 贴了"水果"标签的货架放香蕉
水果 = "橙子"; // 把香蕉换成橙子(值可变)
// 常量 → 永久标签
const string 永久水果 = "火龙果"; // 贴上就不能变的标签
// 永久水果 = "西瓜"; // ❌ 错误!禁止更换
技术对比表:
| 字面量 | 变量 | 常量 (const) | |
|---|---|---|---|
| 名字 | 无 (5就是5) |
有 (count) |
有 (MAX_SIZE) |
| 可变 | ❌ 永远不变 | ✅ 随时可改 | ❌ 初始化后锁定 |
| 内存 | 编译时直接嵌入 | 运行时分配内存地址 | 编译时替换为字面量 |
| 赋值 | 不需要 | 可后期赋值 | 必须声明时赋值 |
💡 实际代码演示
// 字面量使用场景:
int age = 25; // 25是整数字面量
string name = "张三"; // "张三"是字符串字面量
double pi = 3.14159; // 3.14159是浮点字面量
bool isStudent = true; // true是布尔字面量
// 变量使用场景:
int score = 90; // 声明变量
score = 95; // 修改变量的值
// 常量使用场景:
const int MAX_SCORE = 100; // 声明常量
// MAX_SCORE = 200; // ❌ 编译错误!常量不可修改
Console.WriteLine(score); // 输出变量 (输出:95)
Console.WriteLine(MAX_SCORE); // 输出常量 (输出:100)
Console.WriteLine("满分!"); // 直接使用字符串字面量
📌 简单总结:
- 看到直接写在代码里的值(数字/文字)→ 就是字面量
- 看到有名字且会变化的值 → 变量
- 看到有名字且永不变化的值 → 常量
现在明白了吗?字面量就像你直接在黑板上写的数字,而变量是你可以擦掉重写的便签贴,常量则是用记号笔写的永久标语 😄
浙公网安备 33010602011771号