String.Empty与“”

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

String.Empty""什么不同?

这并没有什么不同。

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

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

在应用程序代码中,这个字段最常用于赋值,以将stringvariables初始化为空string。 要testing一个string的值是否为String.Empty,请使用IsNullOrEmpty方法。

根据布拉德艾布拉姆斯 :

正如David所暗示的,String.Empty和“”之间的区别很小,但是有一个区别。 “”实际上创build一个对象,它可能会被拉出stringintern池,但仍然…而String.Empty创build没有对象…所以如果你真的在寻找内存效率,我build议String.Empty。 然而,你应该记住,差异是如此的琐碎,你会喜欢永远不会在你的代码中看到它…

至于System.String.Empty或string.Empty或String.Empty …我的关怀水平低;-)

更新(6/3/2015):

在评论中已经提到,从2003年的上述引用不再是真实的(我认为这是指""实际上创造了一个对象)的陈述。 所以我刚刚在C#5(VS 2013)中创build了几个简单的控制台程序:

 class Program { static void Main() { // Outputs "True" Debug.WriteLine(string.IsInterned(string.Empty) != null); } } class Program { static void Main() { // Outputs "True" Debug.WriteLine(string.IsInterned("") != null); } } 

这表明,当你的代码开始运行的时候, ""String.Empty都是被执行的,这意味着对于所有的实际目的他们是相同的。

Brad评论最重要的部分是:

你应该记住的差异是如此trival你会喜欢永远不会在你的代码中看到它…

这是底线。 “”和String.Empty之间的select不是一个基于性能的决定。 不要浪费很多时间思考这个问题。 根据你发现的更可读性,或者你的项目中已经使用的任何约定来select。

在大多数情况下, String.Empty is identical to ""但通常我发现它更容易使用String.IsNullOrEmpty(str)而不必比较str == "" || str == null str == "" || str == null另外,如果你在.NET 4.0上, String.IsNullOrWhiteSpace(str)涵盖了更多的情况,而且是迄今为止最好的。

没有区别。 有些人喜欢使用String.Empty代码可读性的目的。 使用你使用的那个。

我听到一些关于String.Empty的传言,而且每次都是一个新对象,但是我不知道它是否正确。

String.Empty的主要原因是可读性。