我应该在本地制作一个大型阵列吗?

时间:2012-03-12 16:28:59

标签: c# arrays

我有一个20 x 10的数组,包括双打和短字符串(每个字符少于15个字符)。该数组仅在调用函数时用于函数内部。字符串是常数,只有双打不同。

我应该将此数组保留在函数的本地吗?我不知道的任何考虑因素?

我正在计划这个函数和数组。该数组可能有其他类型,很可能是一些枚举类型,所以我还没有任何具体的代码可供展示。我所知道的是阵列的大致尺寸和尺寸。

4 个答案:

答案 0 :(得分:4)

您只是无法拥有数组的本地实例。

数组是引用类型,因此实际内存总是在堆上分配。

所以:是的,如果符合其用法,请将您的(reference-to-an)数组变量保持为本地变量。它确实:

  

此数组仅在函数

中使用

答案 1 :(得分:3)

通常,从可读性/可理解性的角度来看,我将使数组成为本地数组,以便稍后可能进入并查看此代码的其他人可以理解数组的用法和范围。如果您的后代可以通过检查告诉该数组只能被其内部声明的一个函数使用,那么如果他们需要进行更改,他们就知道更改的范围以及他们必须进行的测试的范围是同样限于使用该功能的代码路径。

缺点是,如果需要多次使用此数组并且其值不会发生变化,那么从性能角度来看,扩大其范围是有意义的,从而延长其使用寿命,因此您不必不必要地创建和使用此数组。如果类将多次实例化,但总是使用相同的值集(或大多数值),则可以将其设置为静态。如果你这样做,我会记录它说它只在一个函数中使用(不幸的是,文档在它们中的语句变得错误之后很久就会保持不变,但至少你正在尽自己的力量通知未来的编码员)

这完全取决于你;我们无法从您的问题中了解您可能对此代码提出的问题,这些问题可能表示更改或未更改。

答案 2 :(得分:2)

我不会过分担心事情,除非你非常担心内存使用情况(这些日子并不是很大的问题)。

答案 3 :(得分:2)

目前,每次调用都会实例化局部变量。

如果你把数组变量和它的声明放在函数之外,那么它不会以double的零值开始,你需要先清理它才能使用它。

但是,如果没有看到代码,我们无法告诉您这是一个好的还是坏的举动,但是对你来说有区别。