为什么string.Empty比.Net中的""效率更高

JL.*_*JL. 3 .net string

我确信string.Empty比在.Net语言中使用""更有效.我想知道的是为什么效率更高?

Fre*_*örk 13

我认为在大多数情况下没有区别.在正常情况下,当您""在代码中使用时,此字符串将被实现,并且将重用相同的字符串实例.因此"",与使用相比,使用时不会有更多的字符串实例String.Empty.

如果你想要证明:

Dim a As String
Dim b As String

a = ""
b = ""

Console.WriteLine(Object.ReferenceEquals(a, b)) ' Prints True '
Run Code Online (Sandbox Code Playgroud)

True如果你用其中一个代替它们,上面的代码也会打印出来String.Empty,所以你甚至可以混合这些方法而不需要创建额外的字符串实例

底线:不同的是个人品味.


Rik*_*Rik 6

首先,我不确定它是否更有效率.它是静态的原因是,它基本上是一个常量:只有一个空字符串.

一个更重要的问题是.NET中的字符串实习存在一些不一致,这可能导致与String.empty的比较并不总是返回预期的结果,具体取决于您正在使用的运行时版本.埃里克利珀写了一个有趣的博客文章关于它在这里.

(摘自Eric的帖子)

object obj = "";
string str1 = "";
string str2 = String.Empty;
Console.WriteLine(obj == str1); // true
Console.WriteLine(str1 == str2); // true
Console.WriteLine(obj == str2); // sometimes true, sometimes false?!
Run Code Online (Sandbox Code Playgroud)