73

我通常在整个应用程序中出于各种原因使用这样的东西:

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

第二个参数是返回值 ifString.IsNullOrEmpty(strFoo) == true

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

4

6 回答 6

155

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

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

string output = somePossiblyNullString ?? "0";

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

string output = string.IsNullOrEmpty(someString) ? "0" : someString;
于 2013-03-27T13:49:22.033 回答
16

您可以使用三元运算符

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

FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;
于 2013-03-27T13:49:44.933 回答
10

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

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

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

FooTextBox.Text = strFoo.NonBlankValueOf();
于 2013-03-27T13:52:34.437 回答
8

这可能会有所帮助:

public string NonBlankValueOf(string strTestString)
{
    return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}
于 2013-03-27T13:49:33.620 回答
0

老问题,但我想我会添加这个来帮忙,

#if DOTNET35
bool isTrulyEmpty = String.IsNullOrEmpty(s) || s.Trim().Length == 0;
#else
bool isTrulyEmpty = String.IsNullOrWhiteSpace(s) ;
#endif
于 2014-09-12T21:19:38.657 回答
0

您可以使用 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
};
于 2020-11-12T16:59:52.267 回答