C#中常量详解

server/2025/3/13 7:02:04/

一、定义与特点‌

1‌.核心定义‌

  • 常量是使用 const 关键字声明的不可变值,其值在‌编译时确定‌且在程序生命周期内不可修改‌。
  • 与变量不同,常量必须在声明时初始化,且后续无法重新赋值‌。

2‌.主要用途‌

  • 表示程序中固定不变的值(如数学常数 π、配置参数等)。
  • 提升代码可读性和维护性(通过语义化命名代替“魔法数字”)‌。

二、数据类型与限制‌

1.支持的数据类型‌

  • 仅限 C# ‌内置基本类型‌:int、double、string、char、bool 等‌。
  • 不支持用户自定义类型‌(如类、结构体、数组),需用 readonly 关键字替代‌。

2‌.示例代码‌

const double Pi = 3.14159;         // 浮点常量‌:ml-citation{ref="2,6" data="citationList"}  
const string AppName = "MyApp";    // 字符串常量‌:ml-citation{ref="2" data="citationList"}  
const int MaxItems = 100;          // 整数常量‌:ml-citation{ref="2,6" data="citationList"}  

三、作用域与生命周期‌

‌1.作用域规则‌

  • 类级常量‌:声明在类内部,作用域为整个类(通过 public/private 等修饰符控制访问范围)‌。
  • 局部常量‌:声明在方法或代码块内部,作用域仅限于当前上下文。

‌2.生命周期‌

  • 常量的生命周期与程序一致,编译时直接替换为字面值,无需运行时内存分配‌47。

四、初始化规则‌

‌规则‌说明
‌必须显式初始化‌常量声明时必须赋值,否则编译报错‌。
‌表达式合法性‌初始化表达式需为编译时可计算的常量值(如 3.14 或 “Hello”)‌。
‌多常量声明‌同一语句可声明多个同类型常量(如 const int a=1, b=2;)。

五、使用注意事项‌

1.命名规范‌

  • 推荐使用‌全大写字母‌或 ‌PascalCase‌ 命名(如 MAX_USERS 或 DefaultTimeout)‌。

‌2.与 readonly 的区别‌

特性‌constreadonly
‌初始化时机‌编译时(声明时)‌运行时(构造函数中)‌
‌数据类型‌仅限内置类型‌支持用户自定义类型‌

3‌.跨程序集引用风险‌

  • 引用其他程序集的常量时,若原程序集更新常量值,需重新编译当前程序集才能生效‌。

总结

‌const 常量‌:编译时确定、不可变、适用于简单固定值‌。
‌readonly 常量‌:运行时初始化、支持复杂类型、适用于动态场景‌。


http://www.ppmy.cn/server/174575.html

相关文章

0312-PromptMRG:诊断驱动的医疗报告生成提示

1,摘要: 提出了诊断驱动的医疗报告生成提示(PromptMRG),这是一个新的框架,旨在通过诊断感知提示的指导提高MRG的诊断准确性。具体来说,PromptMRG是基于编码器-解码器架构,并带有一个额外的疾病分类分支。在…

安卓应用架构模式 MVC MVP MVVM有什么区别?

在 Android 开发中,MVC、MVP 和 MVVM 是三种常见的架构模式,它们的目标都是通过分层解耦代码,提升可维护性和可测试性。以下是它们的核心区别和实际应用对比: 1. 核心职责划分 架构模式分层结构各层职责MVCModel-View-Controlle…

SVN 拉取,文件冲突 解决办法

情景 svn 在拉取代码时 提示 已跳过,其余有冲突 ,警告至少还有一个的文件处于冲突状态 导致文件拉取失败 一、原因 版本库和本地工作副本之间存在文件冲突,导致文件无法正常拉取。 二、 Terminal 窗口解决办法 1.查看冲突文件 在 Termin…

关于AI数据分析可行性的初步评估

一、结论:可在部分环节嵌入,无法直接处理大量数据 1.非本地部署的AI应用处理非机密文件没问题,内部文件要注意数据安全风险。 2.AI(指高规格大模型)十分适合探索性研究分析,对复杂报告无法全流程执行&…

已安装 MFC 仍提示“此项目需要 MFC 库”的解决方法 (MSB8041)

编译报错信息表明项目需要 MFC 库,但 Visual Studio 无法找到。尽管你已确认安装了 MFC,问题仍然存在,这通常是由于环境中存在多个 MSVC 版本造成的冲突。 问题描述: 编译时出现错误:error MSB8041: 此项目需要 MFC …

【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?

查看 WPS 的输入静态地理数据方法总结 方法 1:使用 gdal_translate 将二进制数据转换为 GeoTIFFgdal_translate 工具概述使用 gdal_translate 将二进制数据转换为 GeoTIFF方法 2:使用 ncdump 查看 geo_em.dXX.nc方法 3:使用 Python xarray + matplotlib 可视化 geo_em.dXX.n…

halcon机器人视觉(四)calibrate_hand_eye_stationary_3d_sensor

目录 一、准备数据和模型二、按照表面匹配的的结果进行手眼标定三、根据标定结果计算CalObjInCamPose 一、准备数据和模型 1、读3D模型:read_object_model_3d 2、创建表面匹配模板:create_surface_model 3、创建一个HALCON校准数据模型:crea…

STM32步进电机S型与T型加减速算法

目录 一、基本原理 二、常见类型 三、算法详解 四、应用场合 五、代码实现 1、main