我有一个非常长的c#窗体,我需要在很多地方使用相同的字符串。我应该定义它还是在本地函数中使用字符串?局部函数字符串变量或外部全局变量:哪个更高效?
例如
在全球外部函数我应该定义如下:
static myUrl_A = "abc.com";
static myUrl B = "xyz.com";
,或者我应该只使用一个内部串?还有其他建议吗?
我有一个非常长的c#窗体,我需要在很多地方使用相同的字符串。我应该定义它还是在本地函数中使用字符串?局部函数字符串变量或外部全局变量:哪个更高效?
例如
在全球外部函数我应该定义如下:
static myUrl_A = "abc.com";
static myUrl B = "xyz.com";
,或者我应该只使用一个内部串?还有其他建议吗?
如果它是相同的文字字符串,没关系。它们通常是interned,这基本上意味着编译器会记住它所看到的文字,并且所有出现的文字都是对内存中单个字符串对象的引用。将它们声明在某处以避免在代码中出现“幻数”仍然有意义。
我觉得全局更好,因为有很多用途,但是如果很多函数或线程调用同一个全局变量,应该不会有问题吧? – 2013-04-21 16:26:37
它甚至不应该是全球性的 - 如果你声明它是“私人”的话,那么其他班级将无法看到它。它*应该*是'静态'。 – 2013-04-21 16:42:00
保持范围尽可能小 - 这使得程序逻辑更容易推理(一个只存在于小范围内的变量只能影响该范围,并受该范围的影响)。
对于声明许多局部变量而不是几个全局变量几乎没有性能影响。当你的功能预计非常深时,这是个例外。但即使如此,通常可以忽略几个局部变量声明的开销。
正如@millimoose所提到的那样,性能影响几乎没有实际意义,尽管通过实习可以共享字符串的时间有限。
更重要的是,你真的应该有字符串表示为一个常数在一个地方,如果该字符串真的只有一个单一的值。这样做有两个好处:
只是注意:在这种情况下使用'constant'或'readonly'。 – Tigran 2013-04-21 16:29:16