C # 4.0 - Как обрабатывать необязательные строковые параметры

Этот код не действителен:

private void Foo(string optionalString = string.Empty)
{
   // do foo.
}

Но этот код:

private void Foo(string optionalString = "")
{
   // do foo.
}

Почему? Поскольку string.Empty является полем только для чтения, а не константой, а значения по умолчанию для необязательных параметров должны быть константами времени компиляции.

Итак, на мой вопрос ... (хорошо, беспокойство)

Это то, что я ' Нам пришлось сделать:

private const string emptyString = "";

private void Foo(string optionalString = emptyString)
{
   // do foo.
   if (!string.IsNullOrEmpty(optionalString))
      // etc
}

Как вы, ребята, обрабатываете необязательные строковые параметры?

Почему они не могут сделать String.Empty константой времени компиляции?

16
задан STW 31 August 2010 в 18:31
поделиться

2 ответа

Ммм... что опять не так со строкой optionalParm = ""? Почему это плохо? Вы действительно думаете, что вам нужна символическая константа для пустой строки в этом случае? Как насчет этого тогда?

const int Zero = 0;

void SomeMethod(int optional = Zero) { }

Вам это кажется глупым?

11
ответ дан 30 November 2019 в 22:17
поделиться

С ними лучше всего работать следующим образом:

private void Foo(string optionalString = "")
{
   // do foo.
}

Таким образом, вы не можете использовать String.Empty. Все узнают "", но если бы я нашел OptionalString = nullString, я бы не знал, что и думать. Если ничего другого, назовите вещь emptyString — это не null!

2
ответ дан 30 November 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: