最短的方法来检查null并指定另一个值如果不(Shortest way to check for n

2019-06-25 18:46发布

我拉着varchar值了DB,并要设置的string ,我将他们分配到的“”如果他们是null 。 目前,我正在做这样的:

if (string.IsNullOrEmpty(planRec.approved_by) == true)
  this.approved_by = "";
else
  this.approved_by = planRec.approved_by.toString();

这里好像应该是一种方式,一行像这样做:

this.approved_by = "" || planRec.approved_by.toString();

但是我无法找到一个最佳的方式做到这一点。 有没有更好的办法或者是我做的最好方法是什么?

Answer 1:

试试这个:

this.approved_by = IsNullOrEmpty(planRec.approved_by) ? "" : planRec.approved_by.toString();

您也可以使用空合并运算符其他说 - 因为没有人给与您的代码在这里工作是一个例子:

this.approved_by = planRec.approved_by ?? planRec.approved_by.toString();

但这个例子只能因为对于一个可能值this.approved_by是一样的,你希望将其设定为电位值之一。 对于所有其他情况下,你将需要使用条件运算符,因为我在我的第一个例子说明。



Answer 2:

该COALESCE操作符(??)是你想要的,我相信。



Answer 3:

我的猜测是,你能想出是最好的

this.approved_by = IsNullOrEmpty(planRec.approved_by) ? string.Empty
                                                      : planRec.approved_by.ToString();

当然,因为你的事实,暗示approved_by是一个object (不能等于“”),这将被改写为

this.approved_by = (planRec.approved_by ?? string.Empty).ToString();


Answer 4:

您正在寻找C#COALESCE操作:??。 该运营商需要一个左,右的说法。 如果操作员的左侧为空或可为空,没有值将返回正确的说法。 否则,它将返回左侧。

var x = somePossiblyNullValue ?? valueIfNull;


Answer 5:

用C#6存在的地方planRec.approved_by不是一个字符串的情况下,略短的方式:

this.approved_by = planRec.approved_by?.ToString() ?? "";


Answer 6:

使用C#COALESCE操作:??

// if Value is not null, newValue = Value else if Value is null newValue is YournullValue
var newValue = Value ?? YourNullReplacement;


Answer 7:

为了延长@戴夫的回答 ...如果planRec.approved_by已经是一个字符串

this.approved_by = planRec.approved_by ?? "";


Answer 8:

(!并且没有,如果变量是空分配的任何东西)要指定一个非空的变量不重复的实际变量名,你可以使用带有一个小的辅助方法Action参数:

public static void CallIfNonEmpty(string value, Action<string> action)
{
    if (!string.IsNullOrEmpty(value))
        action(value);
}

然后只用它:

CallIfNonEmpty(this.approved_by, (s) => planRec.approved_by = s);


Answer 9:

您也可以在你的查询,比如在SQL Server中,谷歌ISNULLCASE的内置功能。



Answer 10:

我用extention方法SelfChk

static class MyExt {
//Self Check 
 public static void SC(this string you,ref string me)
    {
        me = me ?? you;
    }
}

然后使用像

string a = null;
"A".SC(ref a);


文章来源: Shortest way to check for null and assign another value if not