String.Empty和“”和null之间的区别是什么?

可能重复:
String.Empty和“”之间有什么区别

""等同于String.Empty吗?

哪个是初始化字符串值的首选?

 public sealed class String { //... public static readonly String Empty = ""; //... } 

如果要表示没有值,请使用null ;

如果要表示存在值,请使用String.Empty ,但该值为空字符串。

String.Empty因为它是一个静态变量,而不是必须创建新字符串的“”,而null意味着您必须将字符串设置为等于字符串的新实例。

(感谢更正)

是。 和String.Empty,但请不要担心 。

String.Empty和“”之间的区别非常小,但是有区别。 “”实际上创建了一个对象,它可能会被拉出字符串实习池,而String.Empty不会创建任何对象,所以如果你真的在寻找最终的内存效率,我建议使用String.Empty。 但是,你应该记住差异是如此微不足道,你将永远不会在你的代码中看到…

使用您认为最具可读性的。

我挑战任何人找到一个真实的应用程序,其中有显着的性能差异……它不会发生。 然而,不同的人发现不同的方法更具可读性。

就个人而言,我是一个""人”。 我发现它不那么混乱了,我从来没有遇到过一个问题,我实际上意外地使用了" " (或类似的东西)。 (这是经常提出的反对意见之一。)

如果你更喜欢string.Empty ,我肯定不会声称你“错了”。 但是,我建议,如果你在一个团队工作,你会讨论它,以找出大多数人认为更具可读性的东西,并坚持这一点。 一致性通常是一件好事。

编辑:只是为了消除可能由“”创建一个新字符串…的声明引起的一些恐惧…它可能会创建一个新字符串一次 (可能每个AppDomain ,可能每个进程;我不确定,它确实没有没问题。 每次使用它时都不会创建新的字符串。 例如,考虑以下代码:

 public void Foo() { string x = ""; for (int i=0; i < 10000000; i++) { string y = ""; // Do something here } string z = ""; } 

您可以保证xyz将引用相同的字符串。 最多,调用Foo意味着创建一个空字符串,并且仅在您第一次调用它时,并且仅当您尚未在程序中的任何其他地方使用空字符串文字时。 上面的代码不会创建1000万个新字符串。

使用string.Empty被认为是更好的做法,但它们实际上是相同的。 但是,它们与null不同。

来自http://msdn.microsoft.com/en-us/library/system.string.empty.aspx

该字段的值是零长度字符串“”。

在应用程序代码中,此字段最常用于分配以将字符串变量初始化为空字符串。 要测试字符串的值是否为String .. ::。Empty,请使用IsNullOrEmpty方法。

他们是平等的。 但String.Empty是常量。

“” – 是创建String的方法。

你要找的答案就在这里。

String.Empty和“”(空字符串)有什么区别?

使用String.Empty