2009-07-22 39 views
4

默認情況下,當我有一串文本將通過消息框,標籤等輸出到屏幕時,我在代碼中使用字符串常量。我這樣做的主要原因是我不希望這些字符串在運行時改變,這種方式沒有人真正觸及它們。我應該使用字符串常量還是字符串文字

我的問題是:

似乎從一個記憶點,這種方法是創建一個對象,其壽命將通過GB來決定,而一個字符串文字似乎更高效,將更快地處置。我知道這是一個菜鳥問題,但是當在常量上使用一個字面量時應該有一個好處(無論多麼小),或者應該在這種場景中使用常量。

我知道它不會在我的應用程序中產生任何顯着差異,但我正在努力提高自己作爲開發人員並構建標準,以保持合理的時間。 :o)

+0

也許我的英文不夠好,但是「字符串常量」和「字符串字面量」之間有什麼區別。他們不一樣嗎? – 2009-07-22 15:53:14

+1

字符串文字是引號(「foo」)之間的部分。常量是將文字分配給名稱(常量字符串FOO =「foo」)。我認爲,當賈森說他的字面意思是使用字面內聯(MessageBox.Show(「foo」))。 – 2009-07-22 15:58:02

回答

12

也沒有。推薦的方式AFAIK是使用資源文件。

+0

我同意。忘記文字和常量。絕對使用資源文件。這樣,字符串保持在外部,並且與語言無關。 – 2009-07-22 15:58:17

+0

當然,取決於上下文。無需SOFT_CODE:http://en.wikipedia.org/wiki/Softcoding =) – 2010-04-07 04:01:50

3

首選字符串常量以字符串文字,但原因是使您的代碼更易於維護,而不是提高其性能。

3

你應該看看「string interning」。基本上,任何源文件中的所有唯一字符串文字(常量或內聯)都將存儲在特定的表中。他們永遠不會被垃圾收集,並可能從重複使用中受益。

你可能要考慮使用一個資源文件,如果你將永遠不會改變這些字符串不想要重新編譯(如國際化)

1

這將取決於你是否需要這些字符串是本地化或沒有。如果您需要將軟件翻譯成其他語言的能力,那麼我會放置儘可能多的字符串,以便在資源文件中顯示給最終用戶。如果你不需要本地化,或者如果有問題的字符串永遠不會顯示給最終用戶,我會使用常量。如果你的字符串是在多個類中共享的,我會創建一個類來包裝作爲公共常量提供的常用字符串。除非這些字符串需要在它們定義的程序集外部使用,否則應儘可能將其保留在最低特權級別(私有,受保護,內部)。

1

出於國際化的目的,確實接受的最佳做法/建議是一組資源文件。

我遵循在他們自己的類中使用字符串常量的相同模式。我發現創建將在整個Web應用程序的多個頁面上使用的常量會更容易。即使是佔位符的const也有幫助!

//{1} for the user's full name for example 
const string SOME_LABEL = "Thanks for purchasing {0} products, {1}!"; 
相關問題