在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
相关产品推荐
相关产品推荐

