跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C Sharp 常量
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:C#常量}} == 简介 == 在C#编程中,'''常量'''(Constant)是一种在程序运行期间其值不可改变的标识符。常量通过`const`关键字声明,必须在声明时初始化,且只能使用编译时可确定的值(如字面量、其他常量或数学表达式)。常量提供以下核心优势: * '''类型安全''':编译器会检查常量值的合法性 * '''性能优化''':编译时直接替换为实际值,无需运行时计算 * '''代码可读性''':通过命名表达固定值的含义 == 声明语法 == C#常量的基本声明格式如下: <syntaxhighlight lang="csharp"> const 数据类型 常量名 = 值; </syntaxhighlight> === 基础示例 === <syntaxhighlight lang="csharp"> const double PI = 3.14159; const int MaxUsers = 100; const string Greeting = "Hello, World!"; </syntaxhighlight> == 常量类型 == C#支持以下类型的常量: {| class="wikitable" |+ 常量类型表 ! 数据类型 !! 示例 !! 说明 | 数值类型 || <code>const int Count = 5;</code> || 包括整数和浮点数 | 布尔类型 || <code>const bool IsEnabled = true;</code> || 仅能是true/false | 字符串类型 || <code>const string Path = "C:\\Temp";</code> || 必须使用双引号 | 枚举类型 || <code>const DayOfWeek FirstDay = DayOfWeek.Monday;</code> || 必须是枚举成员 | null引用 || <code>const object NullObj = null;</code> || 仅适用于引用类型 |} == 编译时常量 vs 运行时常量 == C#中存在两种"常量"概念: <mermaid> flowchart LR A[常量类型] --> B[编译时常量 const] A --> C[运行时常量 readonly] </mermaid> {| class="wikitable" |+ const与readonly对比 ! 特性 !! const !! readonly | 初始化时机 || 声明时 || 声明时或构造函数中 | 内存分配 || 编译时替换 || 运行时分配 | 适用类型 || 基本类型/string || 任意类型 | 性能 || 更优 || 稍低 | 灵活性 || 低 || 高 |} === readonly示例 === <syntaxhighlight lang="csharp"> public class Config { public readonly string LogPath; public Config() { LogPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); } } </syntaxhighlight> == 数学常量应用 == 科学计算中常使用数学常量,例如计算圆面积: <syntaxhighlight lang="csharp"> const double PI = 3.141592653589793; double radius = 5; double area = PI * Math.Pow(radius, 2); Console.WriteLine($"半径为{radius}的圆面积: {area:F2}"); </syntaxhighlight> 输出: <pre> 半径为5的圆面积: 78.54 </pre> == 实际应用案例 == === 场景1:游戏开发 === 在游戏配置中使用常量定义基础参数: <syntaxhighlight lang="csharp"> public class GameSettings { public const int MaxEnemies = 50; public const float Gravity = 9.8f; public const string SaveFile = "game.sav"; public static void ShowSettings() { Console.WriteLine($"最大敌人数: {MaxEnemies}"); Console.WriteLine($"重力系数: {Gravity}"); } } </syntaxhighlight> === 场景2:Web应用 === 定义HTTP状态码常量: <syntaxhighlight lang="csharp"> public class HttpCodes { public const int OK = 200; public const int NotFound = 404; public const int ServerError = 500; public static string GetMessage(int code) { return code switch { OK => "请求成功", NotFound => "资源未找到", ServerError => "服务器错误", _ => "未知状态" }; } } </syntaxhighlight> == 高级主题 == === 常量表达式 === C#允许使用包含运算符的常量表达式: <syntaxhighlight lang="csharp"> const int SecondsPerMinute = 60; const int SecondsPerHour = SecondsPerMinute * 60; const double Radians = 180 / Math.PI; // 需要using System </syntaxhighlight> === 条件编译常量 === 配合预处理指令使用: <syntaxhighlight lang="csharp"> #define DEBUG const int MaxItems = 100; #if DEBUG const string Mode = "调试模式"; #else const string Mode = "发布模式"; #endif </syntaxhighlight> == 最佳实践 == * 使用全大写命名风格(如<code>MAX_VALUE</code>) * 将相关常量组织在静态类中 * 避免过度使用常量导致代码僵化 * 对于可能变化的值,考虑使用<code>readonly</code>或配置文件 == 限制与注意事项 == 1. 不能使用<code>static</code>修饰(常量隐式静态) 2. 不能用于数组或自定义类实例(除null外) 3. 引用类型常量只能是<code>string</code>或<code>null</code> 4. 循环引用会导致编译错误: <syntaxhighlight lang="csharp"> const int A = B + 1; // 错误 const int B = A + 1; </syntaxhighlight> == 总结 == C#常量是类型安全、不可变的编译时常量,通过<code>const</code>关键字声明。它们: * 提高代码可读性和可维护性 * 在编译时被替换为实际值 * 适用于不会改变的基础值 * 与<code>readonly</code>形成互补关系 掌握常量的正确使用方式,可以使您的C#代码更加健壮和高效。 [[Category:编程语言]] [[Category:C Sharp]] [[Category:C Sharp 基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)