我通常在整个应用程序中出于各种原因使用类似的东西:
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
如果没有人有更好的方法吗?
答案 0 :(得分:124)
有一个空的合并运算符(??
),但它不会处理空字符串。
如果您只对处理空字符串感兴趣,可以像
一样使用它string output = somePossiblyNullString ?? "0";
根据您的具体需要,您可以使用条件运算符bool expr ? true_value : false_value
来简单地设置或返回值的/ else语句块。
string output = string.IsNullOrEmpty(someString) ? "0" : someString;
答案 1 :(得分:13)
您可以使用ternary operator:
return string.IsNullOrEmpty(strTestString) ? "0" : strTestString
FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;
答案 2 :(得分:8)
您可以为String类型编写自己的Extension方法: -
public static string NonBlankValueOf(this string source)
{
return (string.IsNullOrEmpty(source)) ? "0" : source;
}
现在你可以像使用任何字符串类型一样使用它
FooTextBox.Text = strFoo.NonBlankValueOf();
答案 3 :(得分:7)
这可能有所帮助:
public string NonBlankValueOf(string strTestString)
{
return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}
答案 4 :(得分:0)
老问题,但我想加上这个帮助,
#if DOTNET35
bool isTrulyEmpty = String.IsNullOrEmpty(s) || s.Trim().Length == 0;
#else
bool isTrulyEmpty = String.IsNullOrWhiteSpace(s) ;
#endif
答案 5 :(得分: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
};