No, a string is a complete object with an object header (containing a reference to the type, synchronization block, etc.), the length and any characters that must be a single null character (two bytes) and the corresponding padding to round to 4 or 8 bytes generally.
Note that although strings in .NET have a length field, they still end in zero for interaction. The null character is not included in length.
Of course, string.Empty will only refer to one object no matter how many times you use it ... but the link will be 4 or 8 bytes, so if you have:
string a = string.Empty; string b = string.Empty; string c = string.Empty;
it will be three links (12 or 24 bytes), all related to the same object (the size of which is probably about 20 or 24 bytes).
Jon skeet
source share