如何使用coalescing Operator根据true或false值来选择方法调用,如下所示:
- Request.QueryString = ="新"?NewPage(): OldPage();
- Request.QueryString = ="黑"?BlackMonie (): Request.QueySTring = ="白"?WhiteMonie (): tac ();
而不是使用存储变量调用常见的合并操作符,如下所示:字符串s= color=="r"?
从你的问题中不太清楚,但我假设NewPage()
和OldPage()
都是void
方法。
所以,你不能像你所建议的那样使用三元操作符,而不进入大量混乱的代码,返回需要调用的操作。
并且似乎没有什么好处试图让这个工作,因为内置的if
, else
关键字非常接近你想要的。
以下是?:
操作符与标准if
代码的建议使用:
Request.QueryString == "new" ? NewPage() : OldPage();
if (Request.QueryString == "new") NewPage(); else OldPage();
相差7个字符。
我会坚持使用标准的if
方法。
您可以将这些方法分配给适当的委托类型,然后调用该委托:
var someCall = Request.QueryString=="new" ? new Action(NewPage) : new Action(OldPage);
someCall();
您只需要在您的三元操作符语句中使用正确的语法,如下面的示例所示(参见MSDN ref https://msdn.microsoft.com/en-us/library/zakwfxx4%28v=vs.90%29.aspx):
)string _test = (Request.QueryString=="new")? NewPage() : OldPage() ;
希望这能有所帮助。最好的祝福,