如果表单不起作用,则短

时间:2015-12-18 09:12:22

标签: c# if-statement short

    public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // Default is required in any case.
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

为什么IDE会在双点“预期的分号”中说出来?

2 个答案:

答案 0 :(得分:9)

条件运算符不是“short if form”...它是一个运算符,它根据第一个操作数的计算值来计算第三个操作数或第二个操作数。整个表达式的结果是任何操作数被评估的结果(在第2个/第3个之外),在必要时转换为结果类型(第2和第3个操作数必须是相同类型,或者必须有将一个隐式转换为另一个)。

您不能将它用作单独的语句,并且您当然不能将多个语句用作操作数。请注意,必须评估为某个值 - 如果OutputDoSomethingElsevoid方法,那么另一个原因导致您无法使用条件运算符。< / p>

就是不要这样做。如果需要if语句的执行模型,请使用if语句。

// I generally try to make conditions positive where possible. It's easier to read IMO.
if (myCondition == "true")
{
    Output("true");
}
else
{
    Output("false");
    DoSomethingElse();
}

答案 1 :(得分:2)

这不是'if'的一般替代品。相反,它通常用于在两个值之间进行选择;

if (myCondition!="true") 
{
    output("false"); 
    doSomethingElse();
}
else
{
    output("true")
}

使用经典的if;

可以更好地表达你所做的事情
output("false"); doSomethingElse();

你遇到的实际问题是你在第一个分支中包含了两个语句;

output("false") the language is expecting the

并且在这种形式下,您只能有一个语句,并且必须返回一个值。在$http.defaults.headers.common.Authorization = $window.sessionStorage.token 之后:`为else-value;你给它一个分号,它很困惑。