当前位置: 首页 > article >正文

C#中常量详解

一、定义与特点‌

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.kler.cn/a/583489.html

相关文章:

  • 理解C语言中的extern关键字
  • qt之No executable specified
  • QT系列教程(21) 自定义模型的拖动实现
  • ARM嵌入式低功耗高安全:工业瘦客户机的智慧城市解决方案
  • 6. MySQL 索引的数据结构(详细说明)
  • 机器人领域专业名词汇总
  • SpringBoot快速接入DeepSeek-R1大模型(JDK1.8)
  • 机器人交互系统 部署构建
  • Flutter 学习之旅 之 flutter 在设备上进行 全面屏 设置/隐藏状态栏/隐藏导航栏 设置
  • Leetcode做题记录----2
  • 深入理解 C# 反射:基础原理与实际应用
  • 第14章 kali linux(网络安全防御实战--蓝军武器库)
  • c++ 嵌入汇编的方式实现int型自增
  • QT创建项目(项目模板、构建系统、选择类、构建套件)
  • NLP常见任务专题介绍(3)-垂直领域的聊天机器人搭建详细教程
  • Ollama+ WebUI 部署deepseek-r1
  • 第13章贪心算法
  • 【mysql】centOS7安装mysql详细操作步骤!
  • 2011-2020年 全国省市县-数字普惠金融指数数字经济指数绿色金融指数县域数字乡村指数
  • MBox20边缘计算网关:助力PLC远程调试监控