我有一個非常長的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