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

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

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

还有另一个原因。

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

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

无论如何,应该考虑字符串实习 ,因为在某些情况下,可能会发生包含相同字符串的两个或更多文字可能最终出现在单个实例中( 请参阅String.IsInterned docs上的备注部分 ):

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

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

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

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

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

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

如果你使用""它很容易被误解为" "所以增加可读性String.Empty; 可以使用

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