【问题标题】:Ternary Operator Error [duplicate]三元运算符错误[重复]
【发布时间】:2014-07-31 15:00:43
【问题描述】:

我想转换这个 if,else-if,有人可以帮我吗?

if (condition1)
    response.Redirect(" some link");
else if (condition2)
    response.Redirect("link 2");

我想转换上面的语句,但最后显示错误,需要“:”。我还有其他方法可以使用它吗?

LinkPurchase.PostBackUrl =((Condition)?string.Format("some link"):  
                        (condition2)?string.Format("link 2));

【问题讨论】:

  • Response.End 返回什么?
  • 简单的 if 有什么问题?
  • “我想将条件代码转换为三进制”。相信我,不,你不会。
  • 我会写这个作为答案,但是新的答案被锁定了...var redirect = condition1 ? "some link" : (condition2 ? "link2") : null; if(redirect!=null)response.Redirect(redirect);
  • @dss539 这可以工作!但是,您的第一个表达式中的 () 放错了位置。

标签: c# asp.net if-statement conditional-operator


【解决方案1】:

您不能将其重写为 ?: 运算符。

您有一个if-else if,而不仅仅是一个if-else

此外,您不会从 Redirect 调用中获取返回值。

您确实想要重写为?: 运算符的通常情况是:

if (condition)
  something = Abc();
else
  something = Xyz();

在哪里可以自然地使用:

something = condition ? Abc() : Xyz();

【讨论】:

  • 可以。这几乎肯定不是一个好主意,但绝对有可能。
  • @Servy 我想知道怎么做?你会回答(condition1 ? () => response.Redirect(" some link") : condition2 ? () => response.Redirect("link 2") : (Action)(() => { }))();(我成功了!)之类的问题吗?
  • 这当然是一种方式,是的。当然不是唯一的方法,但您现在已经成功证明自己的答案是错误的。
  • @Servy 没有什么可以证明一个完美的答案是错误的,即使是它自己的作者的 cmets。
  • 当我真正找到完美答案时,我一定会检验这个理论。
【解决方案2】:

你不能这样做。

这里还有其他答案告诉您 ?: 运算符需要“else”部分,所以是的,第一个问题是您缺少该部分。

但是,Response.Redirect 不会返回任何内容,因此您不能这样做即使使用 else 部分

?: 是一个表达式,你不能(轻松地)用它编写语句。

坚持使用if-statements。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2019-07-14
    • 2011-05-05
    • 2014-09-29
    • 2019-11-18
    • 1970-01-01
    • 2014-04-20
    • 2018-04-11
    相关资源
    最近更新 更多