Подтвердить что ты не робот

Один вкладыш для строки If не является нулевым или пустым

Обычно я использую что-то подобное по разным причинам во всем приложении:

if (String.IsNullOrEmpty(strFoo))
{
     FooTextBox.Text = "0";
}
else
{
     FooTextBox.Text = strFoo;
}

Если я собираюсь использовать его много, я создам метод, который возвращает нужную строку. Например:

public string NonBlankValueOf(string strTestString)
{
    if (String.IsNullOrEmpty(strTestString))
        return "0";
    else
        return strTestString;
}

и используйте его как:

FooTextBox.Text = NonBlankValueOf(strFoo);

Я всегда задавался вопросом, было ли что-то, что было частью С#, которое сделало бы это для меня. Что-то, что можно назвать:

FooTextBox.Text = String.IsNullOrEmpty(strFoo,"0")

вторым параметром является возвращаемое значение, если String.IsNullOrEmpty(strFoo) == true

Если у кого-нибудь нет более подходящих подходов, которые они используют?

4b9b3361

Ответ 1

Существует нулевой оператор коалесцирования (??), но он не будет обрабатывать пустые строки.

Если вам было интересно только иметь дело с нулевыми строками, вы бы использовали его как

string output = somePossiblyNullString ?? "0";

Для вашей конкретной цели существует просто условный оператор bool expr ? true_value : false_value, который можно использовать для просто блоков if/else, которые устанавливают или возвращают значение.

string output = string.IsNullOrEmpty(someString) ? "0" : someString;

Ответ 2

Вы можете использовать тернарный оператор:

return string.IsNullOrEmpty(strTestString) ? "0" : strTestString

FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;

Ответ 3

Это может помочь:

public string NonBlankValueOf(string strTestString)
{
    return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}

Ответ 4

Вы можете написать собственный метод Расширение для типа String: -

 public static string NonBlankValueOf(this string source)
 {
    return (string.IsNullOrEmpty(source)) ? "0" : source;
 }

Теперь вы можете использовать его как с любым строковым типом

FooTextBox.Text = strFoo.NonBlankValueOf();

Ответ 5

Старый вопрос, но я подумал, что добавлю это, чтобы помочь,

#if DOTNET35
bool isTrulyEmpty = String.IsNullOrEmpty(s) || s.Trim().Length == 0;
#else
bool isTrulyEmpty = String.IsNullOrWhiteSpace(s) ;
#endif