『QQ:1353814576』

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);
   }
}

导致问题的原因:

解决办法

重新编译app应用程序主程序,这是在使用常量时必须要注意和理解的一个问题。