C# 常量详解:从基础语法到实际应用

在 C# 开发中,常量(Constant) 是非常重要的基础知识。常量是指在程序运行期间值不会发生改变的数据。合理使用常量不仅可以提高代码的可读性,还可以增强程序的安全性与可维护性。

本文将系统讲解 C# 常量的类型、语法规则、转义字符、字符串常量以及 const 的使用方式,适合初学者系统学习。


一、什么是常量?

常量是固定值,在程序执行期间不会改变。

常量可以是任何基本数据类型,例如:

  • 整数常量
  • 浮点常量
  • 字符常量
  • 字符串常量
  • 枚举常量

常量和变量类似,不同点在于:常量一旦定义,其值不能被修改。


二、整数常量

整数常量可以使用以下三种进制表示:

进制 示例 说明
十进制 85 默认形式
八进制 0213 以 0 开头
十六进制 0x4b 以 0x 或 0X 开头

1️⃣ 后缀说明

整数常量可以带后缀:

后缀 含义
U / u unsigned
L / l long
UL / ul unsigned long

合法示例:

csharp 复制代码
212
215u
0xFeeL
30ul

非法示例:

csharp 复制代码
078     // 8 不是八进制数字
032UU   // 后缀不能重复

三、浮点常量

浮点常量由:

  • 整数部分
  • 小数点
  • 小数部分
  • 指数部分

组成。

可以使用:

  • 小数形式
  • 科学计数法(指数形式)

合法示例:

csharp 复制代码
3.14159
314159E-5
3.14f

非法示例:

csharp 复制代码
510E      // 指数不完整
210f      // 没有小数点或指数
.e55      // 缺少整数或小数

⚠ 注意:

  • 使用指数形式时必须完整
  • f 表示 float
  • d 表示 double(默认)
  • m 表示 decimal

示例:

csharp 复制代码
float a = 3.14f;
double b = 3.14;
decimal c = 3.14m;

四、字符常量

字符常量使用单引号包围:

csharp 复制代码
'x'
'\n'
'\t'
'\u02C0'

常见转义字符

转义符 含义
\ 反斜杠
' 单引号
" 双引号
\n 换行
\t 制表符
\r 回车
\b 退格
\f 换页
\v 垂直制表
\a 警报
\ooo 八进制
\xhh 十六进制

示例代码

csharp 复制代码
using System;

namespace EscapeChar
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello\tWorld\n\n");
            Console.ReadLine();
        }
    }
}

输出结果:

复制代码
Hello    World

五、字符串常量

字符串使用双引号:

csharp 复制代码
"hello world"

也可以使用逐字字符串:

csharp 复制代码
@"hello world"

普通字符串 vs 逐字字符串

写法 说明
"hello \t world" 会解析转义字符
@"hello \t world" 不解析转义字符

示例对比

csharp 复制代码
string a = "hello, world";
string b = @"hello, world";

string c = "hello \t world";
string d = @"hello \t world";

输出区别:

  • c 会产生制表符
  • d 会显示 \t

多行字符串

csharp 复制代码
string text = @"one
two
three";

等价于:

csharp 复制代码
string text = "one\r\ntwo\r\nthree";

六、使用 const 定义常量

在 C# 中使用 const 关键字定义常量。

语法:

csharp 复制代码
const 数据类型 常量名 = 值;

示例代码

csharp 复制代码
using System;

public class ConstTest
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }

    static void Main()
    {
        SampleClass mC = new SampleClass(11, 22);
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}",
                          SampleClass.c1, SampleClass.c2);
    }
}

输出:

复制代码
x = 11, y = 22
c1 = 5, c2 = 10

七、const 和 readonly 的区别

对比项 const readonly
是否编译期常量 是 否
是否必须初始化 必须声明时初始化 可以在构造函数中初始化
是否可以修饰引用类型 可以(字符串等) 可以
是否隐式 static 是 否

示例:

csharp 复制代码
public class Test
{
    public const int A = 10;
    public readonly int B;

    public Test()
    {
        B = 20;
    }
}

八、最佳实践建议

✅ 适合使用 const 的场景:

  • 数学常量
  • 固定字符串
  • 配置编号
  • 不会变化的业务参数

❌ 不建议使用 const 的情况:

  • 未来可能修改的值
  • 来自数据库或配置文件的数据
  • 运行时才能确定的值

九、总结

C# 常量是程序设计中的重要组成部分:

  • 支持多种数据类型
  • 支持多种进制
  • 支持转义字符
  • 使用 const 关键字定义
  • 提高代码安全性与可读性

掌握常量的使用,是迈向 C# 进阶开发的重要一步。

相关推荐
未来之窗软件服务10 小时前
C# 截图源码支持自动保存-东方仙盟
c#·仙盟创梦ide·东方仙盟·电脑工具
UIU1141 天前
-7 / 2 在 C 里是 -3,在 Python 里是 -4,谁算错了?
c++·学习·c#
wflynn1 天前
GitHub 今日推荐|REDox:64 位 token 表示结构化数据,内存占用降 70% 支持多格式互转
开源·c#·github
驰骋工作流1 天前
C#/.NET 开源BPM工作流引擎6大常用对比选型分析驰骋BPM驰骋低代码低代码工作流引擎
开源·c#·.net
en.en..1 天前
C语言 fp与fd 区别详解
c#
淡海水2 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
BD_Marathon2 天前
多轮对话聊天机器人
开发语言·机器人·c#
czhc11400756632 天前
设备标定页防呆为何失效:草稿与真值的错位
c#
周杰伦fans2 天前
轻量模型高并发推理优化技巧
开发语言·人工智能·c#
周杰伦fans2 天前
C#对话摘要降低Token消耗
人工智能·后端·c#