If string 不为 null 或者 else 为空

在整个应用程序中,我通常会出于各种原因使用类似的代码:

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);

我一直想知道 C # 中是否有什么东西可以为我做到这一点。可以这么说:

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

第二个参数是返回的值,如果 String.IsNullOrEmpty(strFoo) == true

如果没有人有更好的方法,他们使用?

193527 次浏览

有一个空合并运算符(??) ,但它不会处理空字符串。

如果您只对处理空字符串感兴趣,那么可以像下面这样使用它

string output = somePossiblyNullString ?? "0";

根据您的具体需要,可以使用条件运算符 bool expr ? true_value : false_value简化设置或返回值的 if/else 语句块。

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

这可能会有所帮助:

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

你可以使用 三元运算符三元运算符:

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


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

您可以为 String:-类型编写自己的 延伸 方法

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

现在您可以像使用任何字符串类型一样使用它

FooTextBox.Text = strFoo.NonBlankValueOf();

老问题了,但我觉得我应该加上这个来帮忙,

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

你可以使用 C # 8/9中的 switch 表达式的模式匹配来实现这一点

FooTextBox.Text = strFoo switch
{
{ Length: >0 } s => s, // If the length of the string is greater than 0
_ => "0" // Anything else
};