本地函数字符串变量或外部全局变量:哪个更有效?

时间:2013-04-21 16:15:18

标签: c# string

我有一个很长的c#窗体,我需要在很多地方使用相同的字符串。我应该只定义它还是在本地函数中使用字符串?

e.g。

在全局外部函数中,我应该定义以下内容:

static myUrl_A = "abc.com";
static myUrl B = "xyz.com";

或者我应该只使用内部字符串?还有其他建议吗?

3 个答案:

答案 0 :(得分:2)

如果它是相同的文字字符串,那没关系。它们通常是 interned ,这基本上意味着编译器会记住它所看到的文字,并且所有出现的文字都是对内存中单个字符串对象的引用。为了避免在你的代码中使用“魔术数字”,将它们声明到某处可能仍然有意义。

答案 1 :(得分:2)

正如@millimoose所提到的,性能影响几乎没有实际意义,尽管通过实习可以共享字符串的时间有限制。

更重要的是,如果该字符串确实只有一个值,那么应该将字符串表示为一个常量。这样做有两个好处:

  1. 您不会意外地在两个不同的地方(如拼写错误)给出相同的字符串不同的值。
  2. 如果 在您指定的某个位置输入错字,则只需在其中更改,而不是在复制它的20个文件中。

答案 2 :(得分:1)

保持范围尽可能小 - 这使您的程序逻辑更容易推理(仅存在于小范围内的变量只会影响该范围,并受该范围的影响)。

声明许多局部变量而不是少数局部变量几乎没有性能影响。例外情况是你的函数需要非常深入地递归。但即便如此,一些局部变量声明的开销通常也可以忽略不计。