【发布时间】:2010-05-25 14:05:20
【问题描述】:
【问题讨论】:
-
如果你在反射器中打开它,你会发现它们是一样的
标签: c#
【问题讨论】:
标签: c#
没有什么不同。
http://msdn.microsoft.com/en-us/library/system.string.empty.aspx:
该字段的值是零长度字符串,""。
在应用程序代码中,此字段最常用于将字符串变量初始化为空字符串的赋值。要测试一个字符串的值是否为 String.Empty,请使用 IsNullOrEmpty 方法。
【讨论】:
根据Brad Abrams:
正如大卫暗示的那样,有区别 String.Empty 和 "" 之间很漂亮 小,但有区别。 “” 实际上创建了一个对象,它会 可能会被拉出绳子 实习生池,但仍然……虽然 String.Empty 不创建对象……所以如果 你真的在寻找最终 在内存效率方面,我建议 字符串.空。然而,你应该 请记住,差异是如此 琐碎,你会喜欢永远看不到它 你的代码...
对于 System.String.Empty 或 string.Empty 或 String.Empty……我的关心 水平低;-)
更新(2015 年 6 月 3 日):
在 cmets 中已经提到,上面 2003 年的引用不再正确(我假设这是指"" 实际上创建一个对象的声明)。所以我刚刚在 C# 5 (VS 2013) 中创建了几个简单的控制台程序:
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 在您的代码开始运行时都处于实习状态,这意味着实际上它们是相同的......
布拉德评论中最重要的部分是:
您应该记住,差异是如此微不足道,您将 就像从来没有在你的代码中看到它一样......
这是底线。在 "" 和 String.Empty 之间进行选择不是基于性能的决定。 Don't waste a lot of time thinking about it. 根据您认为更具可读性的内容或项目中已使用的约定进行选择。
【讨论】:
"" 比string.Empty 更容易阅读和理解。
""到处乱扔,后来引入了很多错误,因为intent不清楚:“没有我的意思是:故意在此处传递空字符串”或“我是否忘记在此处传递非空字符串”。
没有区别。出于代码可读性的目的,有些人更喜欢使用String.Empty。使用您习惯使用的那个。
【讨论】:
在大多数情况下 String.Empty is identical to "" 但通常我发现它更容易使用 String.IsNullOrEmpty(str) 而不必比较 str == "" || str == null 此外,如果您使用的是 .NET 4.0 String.IsNullOrWhiteSpace(str) 涵盖更多情况,并且是迄今为止最好的。
【讨论】:
String.IsNullOrEmpty(str)和string.Empty没有任何关系,只是两个地方都出现了empty这个词。
str == "" || str == null 对我来说看起来很无效,因为首先评估了左侧。使用IsNullOrEmpty 方法的另一个原因:-)
string.Empty 始终是同一个对象
"" 始终是一个新对象,可能必须被垃圾收集器移除。
因此,您应该始终使用 string.empty 而不是 ""。
string a="";
string b=string.Empty;
被翻译成
IL_0000: ldstr ""
IL_0005: ldsfld System.String.Empty
【讨论】:
"" 而不是System.String.Empty 的程序集都在浪费宝贵的内存! ;-)