Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这是一个很好的用法吗??操作人员_C#_Wpf - Fatal编程技术网

C# 这是一个很好的用法吗??操作人员

C# 这是一个很好的用法吗??操作人员,c#,wpf,C#,Wpf,您好,iam正在使用的程序当前正在使用if、else解决向文本框填充错误值的问题: if (!string.IsNullOrWhiteSpace(kundInformation.orgnr)) tbxOrgNr.TextBox.Text = kundInformation.orgnr; else tbxOrgNr.TextBox.Text = ""; 我从未亲自使用过??在此之前,由于应用程序中有数百行类似的代码,

您好,iam正在使用的程序当前正在使用if、else解决向文本框填充错误值的问题:

        if (!string.IsNullOrWhiteSpace(kundInformation.orgnr))
            tbxOrgNr.TextBox.Text = kundInformation.orgnr;
        else
            tbxOrgNr.TextBox.Text = "";
我从未亲自使用过??在此之前,由于应用程序中有数百行类似的代码,因此很难阅读。是否可以更好地使用:

tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";

否。
??
合并运算符将只处理调用
IsNull或Whitespace
的一半


现在,你可以做:


但是这是对
Trim()
的额外调用,对于可读性来说不是很好,如果前导/尾随空格很重要,可能也不是您想要做的。

否。
??
合并操作符将只处理对
IsNullOrWhiteSpace
调用的一半


现在,你可以做:


但这是对
Trim()
的额外调用,对于可读性来说不是很好,如果前导/尾随空格很重要,可能也不是您想要做的??是空合并运算符,因此以下两段代码是等效的

if (kundInformation.orgnr!=null)
            tbxOrgNr.TextBox.Text = kundInformation.orgnr;
        else
            tbxOrgNr.TextBox.Text = "";
或:

请注意,null抑制仅检查(或替换用法)null,而不是空字符串


根据评论编辑。是否同意“零合并”一词??是空合并运算符,因此以下两段代码是等效的

if (kundInformation.orgnr!=null)
            tbxOrgNr.TextBox.Text = kundInformation.orgnr;
        else
            tbxOrgNr.TextBox.Text = "";
或:

请注意,null抑制仅检查(或替换用法)null,而不是空字符串


根据注释编辑。同意“空合并”一词是的,但是:这在语义上是不等价的;由于
或空白
,原始代码将使
变为
。不过,您可以编写自定义扩展方法:

public static string EmptyIfNullOrWhiteSpace(this string s)
{
    return string.IsNullOrWhiteSpace(s) ? "" : s;
}
然后:


是的,但是:这在语义上是不等价的;由于
或空白
,原始代码将使
变为
。不过,您可以编写自定义扩展方法:

public static string EmptyIfNullOrWhiteSpace(this string s)
{
    return string.IsNullOrWhiteSpace(s) ? "" : s;
}
然后:


否。
??
仅检查空值,不检查空/空白

改为创建扩展方法:

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

否。
??
仅检查空值,不检查空/空白

改为创建扩展方法:

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

您混淆了三元运算符(?)和??操作人员您的示例应使用三元运算符:

if (!string.IsNullOrWhiteSpace(kundInformation.orgnr))
    tbxOrgNr.TextBox.Text = kundInformation.orgnr;
else
    tbxOrgNr.TextBox.Text = "";
同:

tbxOrgNr.TextBox.Text = (!string.IsNullOrWhiteSpace(kundInformation.orgnr) ? 
    kundInformation.orgnr : "";
if (kundInformation.orgnr == null) tbxOrgNr.TextBox.Text = "";
else tbxOrgNr.TextBox.Text = kundInformation.orgnr;
您可以在MSDN的页面上找到关于三元运算符的更多信息

??
运算符不同,因为它只检查
null
,所以

tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";
实际上与:

tbxOrgNr.TextBox.Text = (!string.IsNullOrWhiteSpace(kundInformation.orgnr) ? 
    kundInformation.orgnr : "";
if (kundInformation.orgnr == null) tbxOrgNr.TextBox.Text = "";
else tbxOrgNr.TextBox.Text = kundInformation.orgnr;

您可以从MSDN的页面上找到更多关于
运算符的信息。

您混淆了三元运算符(?)和??操作人员您的示例应使用三元运算符:

if (!string.IsNullOrWhiteSpace(kundInformation.orgnr))
    tbxOrgNr.TextBox.Text = kundInformation.orgnr;
else
    tbxOrgNr.TextBox.Text = "";
同:

tbxOrgNr.TextBox.Text = (!string.IsNullOrWhiteSpace(kundInformation.orgnr) ? 
    kundInformation.orgnr : "";
if (kundInformation.orgnr == null) tbxOrgNr.TextBox.Text = "";
else tbxOrgNr.TextBox.Text = kundInformation.orgnr;
您可以在MSDN的页面上找到关于三元运算符的更多信息

??
运算符不同,因为它只检查
null
,所以

tbxOrgNr.TextBox.Text = kundInformation.orgnr ?? "";
实际上与:

tbxOrgNr.TextBox.Text = (!string.IsNullOrWhiteSpace(kundInformation.orgnr) ? 
    kundInformation.orgnr : "";
if (kundInformation.orgnr == null) tbxOrgNr.TextBox.Text = "";
else tbxOrgNr.TextBox.Text = kundInformation.orgnr;

您可以从MSDN的页面上找到有关
??
运算符的更多信息。

否,这不是因为
??
仅检查
null

您可以使用此选项:

tbxOrgNr.TextBox.Text = 
    (!string.IsNullOrWhiteSpace(kundInformation.orgnr)) ? kundInformation.orgnr : "";

这与您的
if
语句基本相同。

否,这不是因为
只检查
null

您可以使用此选项:

tbxOrgNr.TextBox.Text = 
    (!string.IsNullOrWhiteSpace(kundInformation.orgnr)) ? kundInformation.orgnr : "";

这与您的
if
语句基本相同。

您将得到另一个结果。在第一个例子中,如果
kundInformation.orgnr
只包含空格字符,它们将在空字符串中更改。但在第二种情况下,不是吗t@Sivasubramanian:WPF标签的动机是,纯WPF解决方案可能是最干净的。因此,您的编辑无效。您将得到另一个结果。在第一个例子中,如果
kundInformation.orgnr
只包含空格字符,它们将在空字符串中更改。但在第二种情况下,不是吗t@Sivasubramanian:WPF标签的动机是,纯WPF解决方案可能是最干净的。所以你的编辑是无效的。为什么这个答案得到了两张反对票?这似乎有点苛刻,因为这里没有什么不正确的地方。在OPs情况下,答案应该是
No
。对于不是“良好使用???运算符”的OP简单地说,因为这些语句在语义上是不等价的。@ McCravell:我理解你提到标题,但我仍然认为,要正确回答这个问题,就必须考虑整个问题,而不仅仅是标题。@萨尼,同样地,要正确地回答一个问题,就必须考虑整个答案。不仅仅是第一个字。我已经回答了问题的所有要点。请告诉我一些与我没有提到的问题相关的东西。@MarcGravel这是你的特权,而不是由我来决定你应该如何写你的答案。我只能投我的一票,并解释我选择的原因。为什么这个答案得到两张反对票?这似乎有点苛刻,因为这里没有什么不正确的地方。在OPs情况下,答案应该是
No
。对于不是“良好使用???运算符”的OP简单地说,因为这些语句在语义上是不等价的。@ McCravell:我理解你提到标题,但我仍然认为,要正确回答这个问题,就必须考虑整个问题,而不仅仅是标题。@萨尼,同样地,要正确地回答一个问题,就必须考虑整个答案。不仅仅是第一个字。我已经回答了问题的所有要点。请给我看一些相关的东西