Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# 具有1个以上条件检查的三值运算符_C#_Conditional Operator - Fatal编程技术网

C# 具有1个以上条件检查的三值运算符

C# 具有1个以上条件检查的三值运算符,c#,conditional-operator,C#,Conditional Operator,我有一个场景,为了给一个变量赋值,我需要检查多个条件,是否可以将这些条件链接起来 下面只是我的代码的示例格式 Result = (isUser == true && (ResultId == 1 || ResultId == 2 )) ? "Pass" : r.Result, 如果满足条件(isUser==true&&(ResultId==1 | | ResultId==2)),那么我说的是Result=“Pass”,否则我是从r.Result赋值 同样地,我想检查另一个条件(

我有一个场景,为了给一个变量赋值,我需要检查多个条件,是否可以将这些条件链接起来

下面只是我的代码的示例格式

Result = (isUser == true && (ResultId == 1 || ResultId == 2 )) ? "Pass" : r.Result,
如果满足条件
(isUser==true&&(ResultId==1 | | ResultId==2))
,那么我说的是
Result=“Pass”
,否则我是从
r.Result
赋值

同样地,我想检查另一个条件
(isUser==True&&(ResultId==5))
,然后我想说
Result=“缺席”
你的意思是这样的

Result = isUser && (ResultId == 1 || ResultId == 2 ) ?
 "Pass" : isUser && ResultId == 5 ? "Absent" : r.result;

正如评论中所建议的,这对于三元运算符来说太复杂了。如果您有C#8,那么您可以将其与
开关的表达式形式结合使用。比如:

Result = isUser ? ResultId switch
{
    1 => "Pass",
    2 => "Pass",
    5 => "Absent",
    _ => r.Result
}
: r.Result;

我建议使用
if
/
else if
/
else
模式与嵌套的三元运算符相比更易于阅读。您可能还希望跳过显式的true测试,
==true
不需要,因为
isUser
已经是一个bool。我同意上述观点,此代码只是不可读。将来回到这段代码,你会问自己这到底意味着什么。明确使用if/else或默认值和if-like
Result=r.Result;如果(…)Result=“通过”
如果
isUser
为false,而
ResultId
为5,该怎么办?是的,对不起,我没有清楚地看到他的情况!,我刚刚编辑了这篇文章,谢谢