I\'ve read some article about String.Empty vs \"\" and I also do test by my self. Different between them are below.
String.Empty
L_0001: ldsfld strin
From .NET 4.5 the difference in this case is: exactly nothing. It looks like the JIT now detects this ldsfld and injects the interned empty string directly.
You can tell this because in < 4.5, you can change the value of string.Empty via reflection and it impacts code using string.Empty. Nasty but possible. From 4.5 this no longer works. If you can check via reflection you get the hacked version, but code using string.Empty via ldsfld gets the correct empty string rather than the hacked version.