C# 字面量(Literals)的概念

前言
之前学习代码的时候,就一直学到的是变量,常量,这些常用的知识点,我在网上突然知道竟然还有字面量这个概念,虽然感觉用的次数不多,但却是在日常工作中 经常见到用到的东西

字面量都是一些不可改变的值
11 比如: 1 2 3 4 5
12 字面量都是可以直接使用,但是我们一般都不会直接使用字面量。
13 变量,变量可以用来保存字面量,而且变量的值是可以任意改变的
14 变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,
15 而很少直接使用字面量
16 通过变量对字面量进行描述

字面量(Literal)是代码中直接写出来的固定值。简单来说,就
是你在代码里写的实际数据,比如数字、字符、字符串等。C# 中常
见的字面量有整数、浮点数、字符、字符串和布尔值。

理解了!让我用更简单、更直观的方式解释 字面量(Literals),并对比变量和常量。

🌟 字面量(Literals):代码中的"裸值"

想象你在纸上直接写一个数字或单词,不标注它是什么,这就是字面量。
本质:直接在代码中写出的原始值,没有名字,不能修改。

关键特征:

  1. 没有名字
    42 就是42,"你好" 就是"你好"——它们像无名氏

  2. 固定不变
    3.14 永远等于3.14,就像圆周率π的近似值不会自己改变

  3. 编译器自动识别类型

    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("满分!");    // 直接使用字符串字面量

📌 简单总结

  • 看到直接写在代码里的值(数字/文字)→ 就是字面量
  • 看到有名字且会变化的值 → 变量
  • 看到有名字且永不变化的值 → 常量

现在明白了吗?字面量就像你直接在黑板上写的数字,而变量是你可以擦掉重写的便签贴,常量则是用记号笔写的永久标语 😄

posted on 2025-08-06 16:32  C#我喜欢  阅读(34)  评论(0)    收藏  举报

导航