You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中能否将变量赋值给CONST?该操作是否合法?

在C#中能否将const常量设置为自定义变量的值?

结论

直接给const常量赋值自定义变量完全不合法,也没有任何办法实现这种操作——C#对const的定义和特性从根本上否决了这种可能性。

为什么不行?

  • const是编译时常量,它的值必须在编译阶段就完全确定,只能用字面量、其他const常量或者编译期可直接计算的表达式初始化,绝对不能用运行时才能确定值的自定义变量。
  • 编译完成后,const的值会被直接嵌入到所有引用它的代码里,相当于硬编码,运行时根本不存在这个"变量"实体,自然谈不上修改或用变量赋值。

替代方案:使用readonly字段

如果你的需求是用自定义变量设置一个初始化后就不可修改的值,readonly关键字完全可以满足:

实例级readonly(每个类实例可拥有不同值)

public class MyClass
{
    public readonly int MyReadOnlyVal;

    public MyClass(int customValue)
    {
        // 可在构造函数中用自定义变量赋值
        MyReadOnlyVal = customValue;
    }
}

静态readonly(全局唯一值,在静态构造函数中初始化)

public class MyClass
{
    public static readonly int MyStaticReadOnlyVal;

    static MyClass()
    {
        // 这里可以使用自定义变量或运行时计算的值赋值
        int customVar = 200;
        MyStaticReadOnlyVal = customVar;
    }
}

readonly是运行时常量,初始化完成后就无法修改,完美匹配你想用自定义变量设置不可修改值的需求。

内容的提问来源于stack exchange,提问作者Mohamed nageh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:47:04