这个语法是什么意思?当我通过这段代码来时,我目前正在编写 c# 4.0。
_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
? TempData[_dataKey] ?? new ProfileData ()) as ProfileData;
如果我要写它 i IF 语句,那会怎么样?
编译器给了我一个错误,因为我没有写 : 以及需要更多的东西吗?
这个语法是什么意思?当我通过这段代码来时,我目前正在编写 c# 4.0。
_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
? TempData[_dataKey] ?? new ProfileData ()) as ProfileData;
如果我要写它 i IF 语句,那会怎么样?
编译器给了我一个错误,因为我没有写 : 以及需要更多的东西吗?
?? 表示如果它为空,则使用其他值。例如
var name = somevalue ?? "Default Name";
如果somevalue
为空,它将分配值“默认名称”
还有单?是一个三元运算符,基本上你可以这样使用它:
var example = (conditional statement here) ? value_if_true : value_if_false;
但是,当我正确查看时,您的代码似乎没有遵循三元运算符的正确语法,正如 Corey 所说,您可能错过了 ? 关了???。
看起来你错过了?
那里。我怀疑它应该是这样的:
_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
?? TempData[_dataKey]
?? new ProfileData()
) as ProfileData;
在 C# 中,该操作A ?? B
直接等同于(A == null ? B : A)
,或者if (A == null) return B; return A;
如果您愿意。
所以你上面的陈述相当于:
object tmp = SerializationHelper.Deserialize(Request.Form[_dataKey]);
if (tmp == null)
{
tmp = TempData[_dataKey];
if (tmp == null)
_tmp = new ProfileData();
}
_data = tmp as ProfileData;