这种语言显然没有合适的功能,这似乎很奇怪.
我发现自己的数据最好被表达为一个多维数组,但它完全不变,任何人都无法在不改变相关代码的情况下改变它.面对Delphi中的这些东西,答案是显而易见的 - 一个常量,其值是表.但是,C#似乎不支持这样的东西.
谷歌显示许多人对此抱怨,没有好的答案.
人们如何处理这种情况?
(并且不要说常量不属于代码 - 我碰到的最后一个是4个项目的所有可能的排列.除非时空变化的本质,这是固定的.)
发生了什么??有一个答案非常接近,我问的是一个细节,它消失了!简单地声明一个数组排序工作 - 唯一的问题是数组分配将每次运行.我前面的那个包含96个值 - 如何让它只初始化一次?我是否只需要接受范围远大于应有范围的范围?(因为它代表的是一个3行程序,其内部相当于O(n ^ 3)程序.)
C# FAQ中有一个页面关于这个特定的事情。
他们建议使用静态只读数组:
static readonly int[,] constIntArray = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }};
Run Code Online (Sandbox Code Playgroud)
但是,请注意,这只是一种常量 - 您仍然可以重新分配数组中的各个元素。另外,这必须在类级别上指定,因为它是静态的,但它会工作得相当好。