Why isn’t String.Empty a constant?

The reason that static readonly is used instead of const is due to use with unmanaged code, as indicated by Microsoft here in the Shared Source Common Language Infrastructure 2.0 Release. The file to look at is sscli20\clr\src\bcl\system\string.cs.

The Empty constant holds the empty
string value. We need to call the
String constructor so that the
compiler doesn’t mark this as a
literal.

Marking this as a literal would mean
that it doesn’t show up as a field
which we can access from native.

I found this information from this handy article at CodeProject.

Leave a Comment