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 = ""; }
您可以保证x
, y
和z
将引用相同的字符串。 最多,调用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