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

相关推荐
qq_150841993 小时前
3天基于VS2026的C#编程入门及动态调用CH341DLLA64读写I2C从机
开发语言·c#
溪水西流6 小时前
NodifyEditor Zoom 机制分析
开发语言·c#·avalonia
Never_Satisfied9 小时前
在c#中,抛出异常,并指定其message的值
java·javascript·c#
不想看见40411 小时前
Word Ladder Ⅱ -- 广度优先搜索--力扣101算法题解笔记
开发语言·c#
全栈小511 小时前
【C#】.net 6.0和8.0有什么区别,以及8.0增加了那些功能,这些功能有那些作用
开发语言·c#·.net
qq_2979080111 小时前
C#印刷线路板ERP进销存报价财务库存贸易生产企业管理系统软件
sqlserver·开源·c#·.net·开源软件
bugcome_com11 小时前
C# 循环语句详解:理解常见循环类型与控制语句
c#
JQLvopkk14 小时前
能用C#开发AI
开发语言·人工智能·c#
游乐码1 天前
c#类和对象
开发语言·c#