Этот код недействителен:
private void Foo(string optionalString = string.Empty)
{
// do foo.
}
Но этот код:
private void Foo(string optionalString = "")
{
// do foo.
}
Почему? Поскольку string.Empty является полем readonly, а не константой, а значения по умолчанию для необязательных параметров должны быть константой времени компиляции.
Итак, на мой вопрос... (ну, беспокойство)
Это то, что я должен был сделать:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
// do foo.
if (!string.IsNullOrEmpty(optionalString))
// etc
}
Как вы, парни, обрабатываете необязательные строковые параметры?
Почему они не могут String.Empty константу времени компиляции?