According to Brad Abrams:
As David implies, there difference
between String.Empty and “” are pretty
small, but there is a difference. “”
actually creates an object, it will
likely be pulled out of the string
intern pool, but still… while
String.Empty creates no object… so if
you are really looking for ultimately
in memory efficiency, I suggest
String.Empty. However, you should
keep in mind the difference is so
trival you will like never see it in
your code...
As for System.String.Empty or
string.Empty or String.Empty… my care
level is low ;-)
Update (6/3/2015):
It has been mentioned in the comments that the above quote from 2003 is no longer true (I assume this is referring to the statement that ""
actually creates an object). So I just created a couple of simple console programs in 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);
}
}
This demonstrates that both ""
and String.Empty
are both interned when your code starts running, meaning that for all practical purposes they are the same..
The most important part of Brad's comment is this:
you should keep in mind the difference is so trival you will
like never see it in your code...
That's the bottom line. Choosing between "" and String.Empty is not a performance-based decision. Don't waste a lot of time thinking about it. Choose based on whatever you find more readable, or whatever convention is already being used in your project.