yfe*_*lum 27
public sealed class String {
//...
public static readonly String Empty = "";
//...
}
Run Code Online (Sandbox Code Playgroud)
使用null时,你要代表没有价值;
使用String.Empty时要表示不存在是一种价值,但价值是一个空字符串.
Cod*_*313 10
String.Empty因为它是一个静态变量,而不是必须创建新字符串的"",而null意味着必须将字符串设置为等于字符串的新实例.
(感谢更正)
使用您认为最具可读性的.
我挑战任何人找到一个真实的应用程序,其中有显着的性能差异......它不会发生.然而,不同的人发现不同的方法更具可读性.
就个人而言,我是一个""人.我觉得它更简洁,而且我从来没有遇到过,我的问题其实使用" "(或类似的东西)意外.(这是经常提出的反对意见之一.)
如果你愿意string.Empty,我肯定不会声称你"错了".但是,我建议,如果你在一个团队工作,你会讨论它,以找出大多数人认为更具可读性的东西,并坚持这一点.一致性通常是一件好事.
编辑:只是为了消除可能由""创建一个新字符串...的声明引起的一些恐惧...它可能会创建一个新字符串一次(可能每个AppDomain,可能每个进程;我不确定,它确实没有'无所谓).它不会创建一个新的字符串每次使用它的时候.例如,考虑以下代码:
public void Foo()
{
string x = "";
for (int i=0; i < 10000000; i++)
{
string y = "";
// Do something here
}
string z = "";
}
Run Code Online (Sandbox Code Playgroud)
你可以保证x,y并且z会引用相同的字符串.最多,调用Foo将意味着创建一个空字符串,并且仅在您第一次调用它时,并且仅当您尚未在程序中的任何其他位置使用空字符串文字时.上面的代码不会创建1000万个新字符串.
| 归档时间: |
|
| 查看次数: |
21527 次 |
| 最近记录: |