C# 中使用const 常量可能会出现的版本更新问题!
编程开发
C#const常量更新常量不生效
前言:
常量是一种表示恒定不变的值的符号,当定义一个常量时,我们必须在编译时就确定它的值,而当使用常量时,编译器首先从定义常量的模块元数据中查找符号,直接取出常量的值,然后就将它嵌入到编译后产生的IL代码中。
由于常量的值是直接嵌入到代码中的,所以常量在运行时不再需要任何的内存分配,所以我们不能获取常量的地址,或者以引用的方式来传递一个常量。
下面这个例子,我们会发现常量可能导致的版本更新问题 单独修改发布后仅替换MaxEntriesInList的Component.dll会发现输出值都会是第一次编译时的值
public class Component
{
public const Int32 MaxEntriesInList=50;
}
//接着引用这个对象:
class app
{
static void Main()
{
Console.WriteLine(“Max entries supported in list:”+Component.MaxEntriesInList);
}