C# 定义常量 两种实现方法


在C#中定义常量,主要有两种常用的实现方法。第一种是通过`const`关键字,第二种是通过`readonly`关键字(但严格来说,`readonly`并不是定义常量的最佳方式,因为它与`const`有所不同,主要用于类的字段,且只能在构造函数中赋值一次,但这里为了回答你的问题,我会提及它)。不过,基于你的问题,我主要会展示`const`的使用,并简要说明`readonly`的用法。

### 使用`const`关键字

`const`关键字用于声明编译时常量,这意味着常量的值必须在编译时已知,并且在编译后就不能更改了。`const`常量是隐式静态的,并且必须在声明时初始化。


// 定义一个整型常量
public const int MaxValue = 100;

// 定义一个字符串常量
public const string Greeting = "Hello, World!";

### 使用`readonly`关键字(非严格常量定义)

`readonly`关键字用于声明一个只能在构造函数或字段声明时赋值的字段。它主要用于类的成员变量,确保一旦对象被创建,这些成员变量的值就不会被改变。但请注意,这与`const`不同,因为`readonly`字段的值是在运行时确定的,并且可以在构造函数中修改。


public class MyClass
{
    // readonly字段,在构造函数中初始化
    public readonly int ReadOnlyValue;

    public MyClass(int initialValue)
    {
        ReadOnlyValue = initialValue; // 只允许在这里或声明时赋值
    }
}

### 总结

对于定义常量,推荐使用`const`关键字,因为它更符合常量的定义(即在编译时确定且不可更改的值)。而`readonly`则更多用于类的字段,表示一旦对象创建,该字段的值就不会改变,但它不是传统意义上的编译时常量。