问题描述
|
为什么更推荐ѭ0而不是ѭ1?
是因为当编译器解析代码并出现
\"
时,编译器已准备好读取字符串吗?但是在ѭ0中,编译器甚至不会准备好读取字符串?
解决方法
还有另一个原因。
常量由于其性质而为静态,是对某些应用程序域中所有线程共享的单个实例的引用,而文字最终会产生空字符串的“ 4”个实例。
这就是为什么建议使用“ 0”常量只读字段而不使用空的“ 1”字符串文字的原因,并且显然,正如其他人所说的那样,它可以提高可读性。
无论如何,都应该考虑字符串插入,因为在某些条件下,包含同一字符串的两个或多个文字可能会在单个实例中结束(请参见
String.IsInterned
文档的备注部分):
公共语言运行时会自动维护一个表,称为
实习生池,其中包含每个唯一实例的单个实例
在程序中声明的文字字符串常量,以及任何唯一的
您通过调用Intern以编程方式添加的String实例
方法。
,不,这当然不是正确的答案。您没有提到语言,所以让我在这里猜一些东西:
String.Empty
是在class9ѭ类中定义的常数。
\"\"
是空字符串的字符串文字。
现在,如果要进行相等比较,那么您要确保您正在谈论的是同一对象,对吗?
您的语言是否保证\"\"
和string.empty
比较相等?这也可能是运行时的问题。我认为您想在Google上使用的术语是字符串实习。如果有,那么使用哪一个都不重要。如果您不这样做,那么会发生细微的错误。
编辑:我看到你在谈论c#。那确实有字符串实习,所以使用哪一个都不重要。这只是样式问题。
,如果您使用的是\"\"
,则很容易将其与\" \"
混淆,以便提高可读性。可以使用String.Empty;
,从根本上讲,它就像是一个常量值,更便于人类阅读。