用于执行返回类型为Void的方法的条件C#三元运算符语句

用于执行返回类型为Void的方法的条件C#三元运算符语句,c#,asp.net,conditional-statements,ternary-operator,C#,Asp.net,Conditional Statements,Ternary Operator,我们如何使用coalescing运算符根据true或false值选择方法调用,如下所示: Request.QueryString==“新建”?NewPage():OldPage() Request.QueryString==“黑色”?BlackMonie():Request.queysting==“白色”?WhiteMonie():Tacs() 使用stoage变量代替常见的合并运算符调用,如下所示: 字符串s=color==“r”?“红色”:“绿色” 你的问题不太清楚,但我假设NewPage(

我们如何使用coalescing运算符根据true或false值选择方法调用,如下所示:

  • Request.QueryString==“新建”?NewPage():OldPage()
  • Request.QueryString==“黑色”?BlackMonie():Request.queysting==“白色”?WhiteMonie():Tacs() 使用stoage变量代替常见的合并运算符调用,如下所示:
    字符串s=color==“r”?“红色”:“绿色”

    你的问题不太清楚,但我假设
    NewPage()
    OldPage()
    都是
    void
    方法

    因此,如果不使用大量杂乱的代码返回需要调用的操作,就不能像您建议的那样使用三元运算符

    而且,由于内置的
    if
    else
    关键字与您想要的非常接近,因此尝试使其工作似乎没有什么好处

    以下是建议您在标准
    if
    代码中使用
    ?:
    运算符:

    Request.QueryString == "new" ? NewPage() : OldPage();
    if (Request.QueryString == "new") NewPage(); else OldPage();
    
    这是7个字符的差异


    我坚持使用标准的
    if
    方法。

    您只需要在三元运算符语句中使用正确的语法,如以下示例(请参阅MSDN ref):

    希望这能有所帮助。非常感谢,

    您可以将这些方法分配给适当的委托类型,然后调用委托:

    var someCall = Request.QueryString=="new" ? new Action(NewPage) : new Action(OldPage);
    someCall();
    

    但你真的不应该这样做。

    你是在问“三元”运算符
    ??
    是合并运算符。这不是合并运算符,而是条件运算符。是的,它应该是三元运算符/条件运算符。谢谢Grantwiney和Enigmativity以及所有纠正我的人。可能是
    var someCall = Request.QueryString=="new" ? new Action(NewPage) : new Action(OldPage);
    someCall();