2009-07-22 38 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}!"; 
相关问题