C# 常量 (Constants)
常量是编程中用于存储固定值的标识符。在程序执行期间,常量的值不能被改变。合理使用常量可以提高代码的可读性和可维护性,避免代码中出现“魔术数字”。
1. 核心概念
- 不可变性:常量一旦定义并赋值,在后续的代码执行过程中无法修改。
- 类型支持:常量可以是任何基本数据类型,例如整数 (`int`)、浮点数 (`double`, `float`)、字符 (`char`)、字符串 (`string`),也可以是枚举 (`enum`)。
- 编译时解析:常量的值必须在编译时确定。
2. 定义语法
使用 const 关键字来定义常量。
语法格式:
const <数据类型> <常量名称> = <值>;
注意事项: * 常量必须在声明时立即初始化(赋值)。 * 习惯上,常量名称通常使用 PascalCase(帕斯卡命名法)或者全大写(视团队规范而定)。
3. 代码示例
基础数值常量
这是最常见的使用场景,用于定义数学常数或配置阈值。
public class MathUtils { // 用户提供的示例:定义一个双精度浮点常量 public const double Pi = 3.125; // 定义整型常量 public const int MaxRetryCount = 5; }
字符串常量与转义符
在处理字符串常量时,C# 提供了两种方式:常规字符串和逐字字符串(Verbatim Strings)。
| 类型 | 语法特征 | 示例 | 说明 |
|---|---|---|---|
| 常规字符串 | 使用双引号 `““` | `”Hello\tWorld”` | 需要使用反斜杠 `\` 转义特殊字符(如换行、制表符)。 |
| 逐字字符串 | 使用 `@` 前缀 | `@“Hello World”` | 忽略转义符,字符串原样输出,常用于文件路径或多行文本。 |
详细对比示例(参考图片内容):
public void StringExamples() { // 1. 常规字符串:需要转义 // 输出: hello world (中间有制表符) string c = "hello \t world"; // 2. 逐字字符串:原样输出 // 输出: hello \t world (直接输出字符 \t) string d = @"hello \t world"; // 3. 处理双引号 // 常规:需要用 \" 表示引号 string e = "Joe said \"Hello\" to me"; // 逐字:需要用 "" (两个双引号) 表示一个引号 string f = @"Joe said ""Hello"" to me"; // 4. 处理文件路径 (最常用场景) // 常规:必须使用 \\ 来表示反斜杠 string g = "\\\\server\\share\\file.txt"; // 逐字:直接书写路径,可读性更高 string h = @"\\server\share\file.txt"; // 5. 多行字符串 // 常规:需要使用 \r\n string i = "one\r\ntwo\r\nthree"; // 逐字:直接换行书写 string j = @"one two three"; }
4. 为什么要使用常量?
- 安全性:防止程序在运行过程中意外修改关键数据。
- 可维护性:如果 `Pi` 的精度需要调整,只需修改定义处的一行代码,所有引用该常量的地方都会自动更新。
- 可读性:使用 `MaxRetryCount` 比直接在代码里写 `5` 更容易让人理解代码的意图。
评论