Один вкладыш для строки 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
Если у кого-нибудь нет более подходящих подходов, которые они используют?
Ответы
Ответ 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