我想将以下条件转换为三元
if (!string.IsNullOrEmpty(objModel.Status))
{
if (objModel.Status == "0")
{
Model.Sort = "Result1";
}
else if (objModel.Status == "8")
{
Model.Sort = "Result2";
}
else
{
Model.Sort = "Result3";
}
}
我已经尝试了下面的尝试,但是如果
Model.Sort = !string.IsNullOrEmpty(Model.Status)
? (Model.Status == "0" ? Retult1 : string.Empty)
: string.Empty;
保持局部变量以简化
var x = objModel.Status;
if (string.IsNullOrEmpty(x))
{
Model.Sort = x=="0" ? "Result1" :
x=="8" ? "Result2" :
"Result3";
}
您可以拥有这样的三元运算符
a ? b : c ? d : e
得到这个:
if (a) {
b
}
else if (c) {
{
d
}
else {
e
}
在您的情况下
objModel.Status == "0" ? Model.Sort = "Result1" : objModel.Status == "8" ? Model.Sort = "Result2" : Model.Sort = "Result2";
我希望这会有所帮助。
您可以使用这样的三元运算符编写代码:
Model.Sort = string.IsNullOrEmpty(objModel.Status) // if (string.IsNullOrEmpty(Status))
? Model.Sort // Model.Sort = Model.Sort;
: objModel.Status == "0" // else if (Status == "0")
? "Result1" // Model.Sort = "Result1";
: objModel.Status == "8" // else if (Status == "8")
? "Result2" // Model.Sort = "Result2";
: "Result3"; // else Model.Sort = "Result3";
第一个条件代表if
条件,然后在:
运算符之后的每个语句代表比较代表else if
,最后最后一个:
之后的结果代表最终的else
分配。
第一个条件是一种"虚拟"条件(因为如果是正确的话,什么都没有变化*(,但是如果我们要在三元操作中包含IsNullOrEmpty
检查,则需要在true
和false
案例中。
我不确定虚拟分配是否会被优化,或者是否在"虚拟"情况下调用了设置器。如果调用了设置器,则可能会与您的原始代码产生不同的效果,具体取决于设置器代码的作用。