有多少常数?

时间:2015-02-27 04:25:55

标签: c# .net constants

我想问一个有关常量的问题,我知道有关此问题的方法或建议,但最近我已被分配到以前的开发人员使用SQL DB和C#类中都存在的resourcekeys的项目中并且在项目中使用重复的魔法字符串......非常悲伤,字面上是成千上万的魔法字符串(我口吐了)

所以我做的是创建了一个简单的sql来提取和创建每个资源键的变量声明,并简单地粘贴到目标内部密封类中。大约4000个密钥,大约7组,每个类大约500多个资源密钥。

现在另一位开发人员告诉我对加载所有这些密钥的性能表示担忧,但我并没有真诚地想到这一点,但我相信这不应该成为一个问题。

真的有这么多东西是太多常量吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

编译器视角下的常量非常无聊。 C#编译器将简单地在输出程序集中嵌入所有带常量的类,并将常量的任何用法换成实际值:例如

class C { public const T = "T" } 
...
Console.WriteLine(C.T);

将按原样编译:

class C { public const T = "T" } 
...
Console.WriteLine("T");

假设没有动态代码在运行,Jitter甚至不会在运行时查看常量类,因此性能影响几乎可以忽略不计。

答案 1 :(得分:0)

从编译器和运行时的角度来看,使用4000常量是微不足道的,而不是性能问题。大型应用程序可能会有很多或更多的应用程序在其中传播。