程序中的许多常量整数

时间:2017-02-21 08:03:17

标签: c#

我是一名C#初级程序员,并且遇到了在我的程序中定义大量常量整数的要求(最多5000个)。我想知道在我的C#程序文件中是否做了类似的事情

const int a=1;
const int b=2;
....
const int x5000=5000;

在商业应用程序中很实用。我的主管告诉我将它们保存在一个单独的文件中,然后初始化一个变量,以便在程序开始运行时存储它们。但我发现这种方法并不好,因为任何用户都可以更改文件。 我不知道是否有更好的方法可以做到这一点。我还认为,即使我用记事本查看它,所有常量事物在编译的C#文件中仍然很明显。我希望在编译成pe之后源文件中的所有可读文本都是六进制的。

3 个答案:

答案 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