C# 常量

关键要点

  • 常量是程序运行期间保持不变的固定值,使用 const 关键字声明。
  • 必须在声明时初始化,且不能修改,常量类型包括整数、浮点数、字符、字符串和布尔值。
  • 适合用于数学常量或配置参数,区别于可变变量。

什么是常量?

常量是 C# 中使用 const 关键字声明的固定值,程序运行期间不会改变。例如,数学中的 π(3.14159)或最大尝试次数(如 3)可以定义为常量。它们必须在声明时初始化,且一旦设置后不可修改。

如何声明常量?

声明常量的语法是 const 数据类型 常量名 = 值;,例如:

  • const int MaxValue = 100;
  • const string CompanyName = "Microsoft";

常量类型可以是整数(如 int)、浮点数(如 double)、字符(如 char)、字符串(如 string)或布尔值(如 bool)。

常量的用途

常量适合表示固定不变的值,如数学常量、配置参数等,避免硬编码数字,提高代码可读性和维护性。



详细报告:C# 常量的全面分析

C# 是一种由微软开发的现代、面向对象的编程语言,其常量是编程中的重要概念,用于表示程序运行期间保持不变的固定值。本报告基于可靠的中文资源(如 Microsoft Learn、菜鸟教程和 CSDN 博客)进行整理,截至 2025 年 8 月 4 日,确保内容的准确性和时效性。

背景与概述

在 C# 中,常量(constant)是指在程序执行期间不会改变的值。常量使用 const 关键字声明,必须在声明时初始化,且一旦初始化后不能再修改。常量通常用于表示固定不变的值,例如数学常量、配置参数或任何在程序生命周期内不应该改变的数值。

常量的定义与声明

  1. 声明语法
  • 常量的声明语法如下:
    csharp const 数据类型 常量名 = 值;
  • 数据类型:常量的数据类型必须是 C# 的内置类型,包括但不限于 intdoublestringcharbool 等。
  • 常量名:常量的名称遵循 C# 的标识符命名规则,通常使用大写字母或 camelCase 命名法。
  • :常量的值必须在声明时赋值,且必须是编译时可确定的表达式。
  • 示例:
    csharp const int MaxValue = 100; const double Pi = 3.14159; const string CompanyName = "Microsoft"; const bool IsActive = true;
  1. 初始化要求
  • 常量必须在声明时初始化,不能在构造函数或运行时动态赋值。
  • 常量的值必须是编译时可计算的表达式,例如字面量或对其他常量的引用。

常量的类型

C# 中的常量可以是以下类型:

  • 整数常量:可以是十进制、八进制或十六进制。
  • 示例:100(十进制),074(八进制),0xFF(十六进制)。
  • 整数常量可以带后缀,如 U(无符号)或 L(长整型),例如 100U
  • 浮点常量:表示实数,可以使用科学计数法。
  • 示例:3.142.5e3(科学计数法)。
  • 字符常量:单个字符,用单引号括起来。
  • 示例:'A''\t'(制表符)。
  • 字符串常量:字符序列,用双引号括起来。
  • 示例:"Hello, World!"@"C:\Windows"(逐字字符串)。
  • 布尔常量truefalse
  • 枚举常量:使用 enum 关键字定义。
  • 示例:
    csharp enum Days { Mon, Tue, Wed }; const Days FirstDay = Days.Mon;

以下是常量的类型总结表:

类型描述示例
整数常量十进制、八进制或十六进制100, 074, 0xFF
浮点常量实数,可用科学计数法3.14, 2.5e3
字符常量单个字符,用单引号括起来'A', '\t'
字符串常量字符序列,用双引号括起来"Hello", @"C:\Windows"
布尔常量真或假true, false
枚举常量使用 enum 定义的命名常量Days.Mon

常量的特点

  • 不可变性:一旦定义,值不能改变。
  • 编译时确定:常量的值在编译时就已确定,编译器会将常量替换为字面量。
  • 使用场景:适合用于固定不变的值,如数学常量、配置参数等。
  • 内存开销const 常量在编译时被替换为字面量,无运行时内存开销。

常量与变量的区别

  • 变量:值可以在运行时改变,使用 var 或具体类型声明。
  • 常量:值在编译时确定,运行时不可变,使用 const 关键字声明。

以下是常量与变量的对比表:

特性常量变量
声明关键字const无(直接声明类型或用 var
可变性不可变可变
初始化时间必须在声明时初始化可在声明时或运行时初始化
内存开销编译时替换,无运行时开销运行时分配内存
使用场景固定值,如数学常量动态值,如计数器

常量的使用场景

  • 数学常量:如 π(3.14159)、e(2.71828)。
  • 配置参数:如最大尝试次数、默认端口号。
  • 共享值:为所有对象共享的固定值,例如状态码。

注意事项

  • 常量只能是 C# 的内置类型(如 intdoublestring 等),不能是用户自定义的类型(如类、结构体)。
  • 除了 string 以外的引用类型常量只能初始化为 null
  • 使用 readonly 关键字可以创建运行时初始化的只读字段,但这与 const 不同,readonly 字段可以在构造函数中初始化。

示例代码

以下是一个使用常量的简单示例:

using System;

class Program
{
    const double Pi = 3.14159;
    const int MaxAttempts = 3;

    static void Main()
    {
        Console.WriteLine("Pi 的值是:" + Pi);
        Console.WriteLine("最大尝试次数:" + MaxAttempts);
    }
}

在这个示例中,PiMaxAttempts 是常量,它们的值在程序运行期间不会改变。

相关概念:readonlyconst 的区别

  • const:编译时常量,必须在声明时初始化,值不可变,适合固定值。
  • readonly:运行时只读字段,可以在构造函数中初始化,适合动态计算的不可变值。

以下是 constreadonly 的对比表:

特性constreadonly
初始化时间必须在声明时初始化可在声明时或构造函数中初始化
可变性不可变不可变
内存开销编译时替换,无运行时开销运行时分配内存
使用场景固定值,如数学常量动态计算的不可变值

总结与建议

C# 中的常量是存储固定值的工具,适合表示程序中不会改变的值。初学者建议从简单的整数和字符串常量开始熟悉,逐步掌握枚举常量的使用。对于复杂项目,注意区分 constreadonly,选择适合的场景。

参考资源

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注