Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 程序中的许多常量整数_C# - Fatal编程技术网

C# 程序中的许多常量整数

C# 程序中的许多常量整数,c#,C#,我是一名初级C#程序员,遇到了在我的程序中定义大量常量整数(最多5000个)的需求。我想知道是否在我的C#程序文件中执行类似的操作 const int a=1; const int b=2; .... const int x5000=5000; 在商业应用程序中是实用的。我的主管告诉我把它们放在一个单独的文件中,然后在程序开始运行时初始化一个变量来存储它们。但我发现这种方法不好,因为任何用户都可以更改文件。 我不知道有没有更好的办法。我还认为,即使在我用记事本查看编译后的C#文件时,所有常量的

我是一名初级C#程序员,遇到了在我的程序中定义大量常量整数(最多5000个)的需求。我想知道是否在我的C#程序文件中执行类似的操作

const int a=1;
const int b=2;
....
const int x5000=5000;
在商业应用程序中是实用的。我的主管告诉我把它们放在一个单独的文件中,然后在程序开始运行时初始化一个变量来存储它们。但我发现这种方法不好,因为任何用户都可以更改文件。 我不知道有没有更好的办法。我还认为,即使在我用记事本查看编译后的C#文件时,所有常量的内容仍然很明显。我希望编译成pe后源文件中的所有可读文本都被十六进制化

你可以看看 并添加一个静态类,比如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,
}
公共静态类常量
{
公共静态int A{get{return 1;}}
公共静态int B{get{return 2;}}
公共静态int C{get{return 3;}}
公共静态int x5000{get{return 5000;}}
}
公共枚举经济
{
A=1,
B、 你可以看看
并添加一个静态类,比如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,
}
公共静态类常量
{
公共静态int A{get{return 1;}}
公共静态int B{get{return 2;}}
公共静态int C{get{return 3;}}
公共静态int x5000{get{return 5000;}}
}
公共枚举经济
{
A=1,

B、 //处理这个问题的一种常用方法是声明包含常量值的类,并为它们指定有意义的名称

对于数千个常量,如果这些常量可以有意义地分组(通常是围绕它们的使用方式),那么使用多个类可能会很有用

public class Constants
{
    public int A { return 1; }
    public int B { return 2; }
    public int X5000 { return x5000; }
}
然后将这些类传递到需要它们所持有的常量的任何类中

此外,如果需要,可以在构造期间使用外部源的值初始化该类


主要的一点是为常量指定有意义的名称,按用途分组,并将值从何处提取。

处理此问题的常用方法是声明包含常量值的类,并为它们指定有意义的名称

对于数千个常量,如果这些常量可以有意义地分组(通常是围绕它们的使用方式),那么使用多个类可能会很有用

public class Constants
{
    public int A { return 1; }
    public int B { return 2; }
    public int X5000 { return x5000; }
}
然后将这些类传递到需要它们所持有的常量的任何类中

此外,如果需要,可以在构造期间使用外部源的值初始化该类


要点是为常量指定有意义的名称,按用途分组,并将值从何处提取。

在这种情况下,我试图将常量收集到逻辑组中。每个组-一个类:

public sealed class ABCConsts{
   public const int A=1;
   public const int B=2;
   ...
}

最好将每个类放入单独的文件中


附言:很好,请继续阅读-

在这种情况下,我试图将常量收集到逻辑组中。每组-一个类:

public sealed class ABCConsts{
   public const int A=1;
   public const int B=2;
   ...
}

最好将每个类放入单独的文件中


PS:很好,请继续阅读-

为什么需要5000个常量?在我看来,您的设计似乎有问题。@PatrickHofman可能正在使用PLC,它有5k返回码,我知道这很奇怪,但可能存在。Web看门人:enum呢?@Web看门人哦,它只有4000个?这改变了一切。无需回答Patrick在该ca中的问题se./我怀疑这是盲目遵守“无幻数”规则,走到了不合逻辑的极端。在你工作的领域中,你真的相信有超过4000个不变的(或缓慢变化的,比发布速度慢的)变量?“我还认为,即使在我用记事本查看已编译的C#文件时,所有常量的内容在该文件中仍然很明显。”当然,如果它们不存在,你会如何使用它们;这有什么问题吗?“我希望编译成pe后源文件中的所有可读文本都被十六进制化。我看不出你在这里的问题r、 感觉你对无能用户摆弄程序的担心太过分了。同时,将整数转换为十六进制在安全性方面也没有任何作用,因为任何具备必要黑客技能的人在读取十六进制值方面都不会有问题。为什么你需要5000个常量?在我看来,你的设计似乎有问题。@Patrickhoffman正在与PLC合作,它有5k返回码,我知道这很奇怪,但有可能。网络管理员:那enum呢?@WebManitor哦,它只有4000?这改变了一切。在这种情况下,不需要回答Patrick的问题。/我怀疑这是盲目遵守“无魔法数字”规则走到了不合逻辑的极端。在你工作的领域中,你真的相信有超过4000个不改变的(或缓慢改变的,比发布速度慢的)变量?“我还认为,即使在我用记事本查看已编译的C#文件时,所有常量的内容在该文件中仍然很明显。”当然,如果它们不存在,你会如何使用它们;这有什么问题吗?“我希望编译成pe后源文件中的所有可读文本都被十六进制化。我看不出你在这里的问题r、 感觉你对无能用户摆弄程序的担心太过分了。同时,将Int转换为hex在安全性方面也不会起作用,因为任何具有必要黑客技能的人在读取hex值方面都不会有问题。这正是我要发布的答案;-)我不完全同意这个答案:1)如果y是真正的常量,出于性能目的,它们应该是公共常量字段,因为getter实际上被编译成方法调用。只要它们确实是常量值,所以不会被更改,这就不会违反封装