This code is not valid:
private void Foo(string optionalString = string.Empty)
{
   // do foo.
}
But this code is:
private void Foo(string optionalString = "")
{
   // do foo.
}
Why? Because string.Empty is a readonly field, not a constant, and defaults for optional parameters must be a compile-time constant.
So, onto my question... (well, concern)
This is what i've had to do:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
   // do foo.
   if (!string.IsNullOrEmpty(optionalString))
      // etc
}
How do you guys handle optional string parameters?
Why can they not make String.Empty a compile-time constant?
 
     
     
     
     
     
    