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# 进阶开发的重要一步。

相关推荐
xiaoshuaishuai812 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
Xin_ye1008612 小时前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
爱讲故事的13 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
JaydenAI14 小时前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
z落落15 小时前
C# 继承:父子构造函数 + base 关键字 +五大访问修饰符(同项目+跨项目 全覆盖)
开发语言·c#
海盗123415 小时前
C#中PDF操作-QuestPDF页面设置与布局
java·pdf·c#
玩c#的小杜同学16 小时前
一周 AI 新鲜事|2026.05.25—2026.05.31
人工智能·程序人生·ai·c#·程序员创富
周杰伦fans16 小时前
C# 异常继承深度解析:从设计原则到 sealed 关键字的奥秘
java·jvm·c#
多巴胺耐受17 小时前
【WPF】炫酷的科技报警弹窗
科技·c#·wpf