我拉着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中,谷歌ISNULL
和CASE
的内置功能。
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