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的主要原因是可读性。