您正在使用的程序目前正在使用if,否则用于解决向文本框填充错误值的问题:
if (!string.IsNullOrWhiteSpace(kundInformation.orgnr))
tbxOrgNr.TextBox.Text = kundInformation.orgnr;
else
tbxOrgNr.TextBox.Text = "";
我从未亲自使用过?因为它在应用程序中有数百个类似的代码行,所以很难阅读。可能更好用:
tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";
答案 0 :(得分:5)
没有。 ??
合并运算符仅处理IsNull
调用的IsNullOrWhiteSpace
部分。
现在,你可以做:
tbxOrgNr.TextBox.Text = (kundInformation.orgnr ?? "").Trim();
但这是对Trim()
的额外调用,对可读性不是很好,如果前导/尾随空格很重要,也许不是你想要做的事情。
答案 1 :(得分:3)
没有。 ??
仅检查null而不是空/空格。
改为创建扩展方法:
public static class StringExtensions
{
public static string ValueOrEmpty(this string value)
{
if (!string.IsNullOrWhiteSpace(value))
return value;
else
return "";
}
}
然后你可以这样使用:
tbxOrgNr.TextBox.Text = kundInformation.orgnr.ValueOrEmpty();
当然,您也可以通过另一种方式来生成更具可读性的代码:
public static class TextBoxExtensions
{
public static void SetTextOrEmpty(this TextBox tb, string value)
{
if (!string.IsNullOrWhiteSpace(value))
tb.Text = value;
else
tb.Text = "";
}
}
这提供了更好的任务:
tbxOrgNr.TextBox.SetTextOrEmpty(kundInformation.orgnr);
答案 2 :(得分:2)
不,不是因为??
只检查null
。
你可以改用它:
tbxOrgNr.TextBox.Text =
(!string.IsNullOrWhiteSpace(kundInformation.orgnr)) ? kundInformation.orgnr : "";
这与您的if
声明基本相同。
答案 3 :(得分:0)
是的,但是:这在语义上并不等同;由于" "
,原始代码会使""
变为OrWhiteSpace
。但是,您可以编写自定义扩展方法:
public static string EmptyIfNullOrWhiteSpace(this string s)
{
return string.IsNullOrWhiteSpace(s) ? "" : s;
}
然后:
tbxOrgNr.TextBox.Text = kundInformation.orgnr.EmptyIfNullOrWhiteSpace();
答案 4 :(得分:0)
你把三元运算符(?)的使用与??混淆了运营商。您的示例应使用三元运算符:
if (!string.IsNullOrWhiteSpace(kundInformation.orgnr))
tbxOrgNr.TextBox.Text = kundInformation.orgnr;
else
tbxOrgNr.TextBox.Text = "";
与:
相同tbxOrgNr.TextBox.Text = (!string.IsNullOrWhiteSpace(kundInformation.orgnr) ?
kundInformation.orgnr : "";
您可以在MSDN上的?
: Operator (C# Reference)页面找到有关三元运算符的更多信息。
??
运算符不同,因为它只检查null
,所以
tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";
实际与:
相同if (kundInformation.orgnr == null) tbxOrgNr.TextBox.Text = "";
else tbxOrgNr.TextBox.Text = kundInformation.orgnr;
您可以在MSDN上的??
Operator (C# Reference)页面上找到有关??
运算符的更多信息。
答案 5 :(得分:-1)
??是一个空合并运算符,因此以下两段代码是等价的
if (kundInformation.orgnr!=null)
tbxOrgNr.TextBox.Text = kundInformation.orgnr;
else
tbxOrgNr.TextBox.Text = "";
OR:
tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";
请注意,null抑制仅检查(或替换用法)null,而不是空字符串。
根据评论编辑。同意“null-coalescing”一词