复杂的if else逻辑

Kum*_*mar 6 c# logic

如何实现以下复杂逻辑?

flag1可以是"N"或"A"或"I"
flag2可以是"N"或"A"或"I"
flag3可以是"N"或"A"或"I"

function(string flag1,string flag2,string flag3)开始

该函数需要返回:

  1. 如果flag1,flag2和flag3为"N"则返回"None"

  2. 如果flag1,flag2和flag3为"A",则返回"Active"

  3. 如果flag1,flag2和flag3为"I",则返回"Inactive"

  4. 如果flag1,flag2和flag3是"A"和"I"(或"N"),则返回"both"

例如1)flag1为"A",flag2为"I",flag3为"I",
例如2)flag1为"I",flag2为"A",flag3为"I",
例如2)flag1为"A"和flag2是"N",flag3是"我"

回顾结果

结束

谢谢你的回复,但没有一个帖子给出答案.我知道是否有其他约束和寻找逻辑来实现上面的psedocode.所有四个都是特殊的条件#4很复杂,需要知道如何实现它.

the*_*oop 20

你对第4点的逻辑令人困惑......

我会使用枚举值,而不是字符串 - 它更加类型安全(例如,如果有人传递"WIBBLEWOBBLE"给你的方法怎么办?它应该返回什么?)

enum Value { None, Active, Inactive, Both }

private Value GetValue(Value flag1, Value flag2, Value flag3) {
    if (flag1 == flag2 && flag2 == flag3)    // they are all the same
        return flag1;
    else return Value.Both;    // there is a difference
}
Run Code Online (Sandbox Code Playgroud)

  • 如果if是真的,你已经退回了.否则+1,因为能够找出所发布的奥术要求..假设你的解释是准确的.. (2认同)
  • Ay,'else`是多余的,但它确实使逻辑显而易见 (2认同)
  • 作为一个注释,`enum`使这更安全,但仍然可以发送无效输入.您可以将任何整数值转换为特定的`enum`类型.(我本来也建议使用`enum`.我只是不希望人们产生错误的安全感.) (2认同)