我是一名C#初级程序员,并且遇到了在我的程序中定义大量常量整数的要求(最多5000个)。我想知道在我的C#程序文件中是否做了类似的事情
const int a=1;
const int b=2;
....
const int x5000=5000;
在商业应用程序中很实用。我的主管告诉我将它们保存在一个单独的文件中,然后初始化一个变量,以便在程序开始运行时存储它们。但我发现这种方法并不好,因为任何用户都可以更改文件。 我不知道是否有更好的方法可以做到这一点。我还认为,即使我用记事本查看它,所有常量事物在编译的C#文件中仍然很明显。我希望在编译成pe之后源文件中的所有可读文本都是六进制的。
答案 0 :(得分:2)
处理此问题的常用方法是声明包含常量值的类,并为它们指定有意义的名称。
使用数千个常量,如果常量可以有意义地分组,通常围绕它们的使用方式,则使用多个类可能很有用。
public class Constants
{
public int A { return 1; }
public int B { return 2; }
public int X5000 { return x5000; }
}
然后将这些类传递给任何需要它们持有的常量的类。
此外,如果需要,可以在构造期间使用外部源的值初始化类。
重点是给常量提供有意义的名称,按使用分组并抽象出值的来源。
答案 1 :(得分:1)
您可以查看enum 并添加一个静态类,类似于ErrorCodeManager来访问枚举,只是因为重构那些错误代码的来源
public static class Constants
{
public static int A { get { return 1; } }
public static int B { get { return 2; } }
public static int C { get { return 3; } }
public static int x5000 { get { return 5000; } }
}
public enum EConst
{
A = 1,
B, // <= value is 2
C, // <= value is 3
x5000 = 5000,
}
它们都以相同的方式工作,在我看来enum更具可读性,为什么使用static int?
答案 2 :(得分:1)
在这种情况下,我试图将consts收集到逻辑组中。每组 - 一类:
public sealed class ABCConsts{
public const int A=1;
public const int B=2;
...
}
...
public sealed class XConst{
public const int X5000 = 5000;
}
最好将每个类放入单独的文件中。
PS:进一步阅读的好书 - Static readonly vs const fields