为什么string.Empty比“”更推荐?

时间:2011-04-13 13:35:53

标签: c# string parsing compiler-construction

为什么string.Empty""更推荐?

是因为当编译器解析代码并且出现"时,编译器是否已准备好读取字符串?但在string.Empty中,编译器甚至不准备读取字符串?

4 个答案:

答案 0 :(得分:6)

还有另一个原因。

常量,因为它们的性质,是静态是对某些应用程序域中所有线程共享的单个实例的引用,而文字最终会生成N个实例。空字符串。

这就是为什么建议使用string.Empty 常量只读字段而不是使用空""字符串文字,显然,正如其他人所说,它增加了可读性。< / p>

无论如何, string interning 应该被考虑在内,因为在某些情况下,可能会发生包含相同字符串的两个或更多文字可能在一个实例中结束(see remarks section on String.IsInterned docs) :

  

公共语言运行库自动维护一个名为的表   实习池,包含每个唯一的单个实例   在程序中声明的文字字符串常量,以及任何唯一的   通过调用Intern以编程方式添加的String实例   方法

答案 1 :(得分:4)

不,这肯定不是正确的答案。你没有提到一种语言,所以让我猜一下这里的一些东西:

String.Empty是在类string上定义的常量。 ""是空字符串的字符串文字。

现在,如果你正在进行相等比较,那么你想确定你在谈论同一个对象,对吗?

您的语言是否保证""string.empty比较平等?这也可能是运行时的问题。我认为你想谷歌的术语是字符串实习。如果你有,那么你使用哪一个并不重要。如果不这样做,那么就会发生微妙的错误。

编辑:我看到你在谈论c#。那个 有字符串实习,所以你使用哪一个并不重要。这只是一种风格问题。

答案 2 :(得分:4)

如果您使用的是"",则很容易被" "误认为是为了提高可读性String.Empty;可以使用

答案 3 :(得分:0)

它基本上就像空的常量值,更具人性化。