代码之家  ›  专栏  ›  技术社区  ›  Gabe Tucker

C#:你能将三元条件运算符(?:)应用于语句吗?

c#
  •  -2
  • Gabe Tucker  · 技术社区  · 3 年前

    我喜欢C#使用三元条件运算符返回表达式的能力。但是我想执行一个语句,而不是仅仅使用三元条件类过程返回一个表达式;有办法做到这一点吗?

    //TRADITIONAL TERNARY CONDITIONAL (i.e., ?:):
    a = isBob ? "Bob" : "Steve";
    
    //HOW YOU WOULD WRITE MY PROPOSITION TRADITIONALLY:
    if (isBob) { a = "Bob"; } else { b = "Steve"; }
    
    //GOAL — HOW YOU WOULD LIKELY WRITE MY PROPOSITION USING THIS PROPOSED OPERATOR (e.g., !?!?):
    isBob !?!? a = "Bob" : b = "Steve";
    

    这是可能的,还是只是一厢情愿?我猜可能是后者,但我只是想先和退伍军人确认一下。非常感谢。

    1 回复  |  直到 3 年前
        1
  •  2
  •   Caius Jard    3 年前

    如果你愿意的话,你可以写这个,假设你在空合并和三元合并之间混淆了

    _ = isBob ? a = "Bob" : b = "Steve";
    

    string a 并将赋值结果返回到discard(即丢弃),如果isBob为false,则与b类似。你必须用三元的值做一些事情,但是丢弃它是可以接受的。。

    //euww, objecfuscation?
    _ = isBob ? (object)(a = "Bob") : b = 1;
    
    //it's not so bad
    if(isBob) a = "Bob"; else b= "Steve";