c# 编译期常量const和运行时常量readonly
注意:const编译期常量是编译的时候就确定的,可以查看IL代码,是写死的。如果另一个程序集引用后,该程序集没有进行编译,则值不会改变。
看效果:
项目中有2个程序集:
其中:常量在这个程序集中定义并初始化。
namespace ConstReadOnlyTest { public class Class1 { public const string a= "我是const常量."; public static string b = "我是static变量."; public readonly static string c = "我是readonly变量."; } }
另外,在另一个程序集中引用:
class ConstReadOnlyTest { static void Main(string[] args) { Console.WriteLine(Class1.a); Console.WriteLine(Class1.b); Console.WriteLine(Class1.c); Console.ReadKey(); } }
看结果:
接着,修改const的值:
namespace ConstReadOnlyTest { public class Class1 { public const string a= "我是const常量.1111"; public static string b = "我是static变量.2222"; public readonly static string c = "我是readonly变量.3333"; } }
编译后,把dll文件放到控制台的\bin\Debug中:
接着,直接运行CAStudy.exe
可以发现const常量的值未改变。