我知道一般只有一行,就可以不加,第2行直接写, 多行的话要加,但是我试验了下多行也可以不加, c#里是根据if后面的;判断呢网上查了一下,貌似c语言,java和.net对if的编译都不一样,有的不加大括号, 会以为 if()就结束了,会自动编译一个;但c#里好像不会,我试验了下,怎么写都正常执行,即使写成多行,不加{}也行
        if (int.Parse(ztid) > 0)
        {
            strZt = MenuClass.GetZtName(int.Parse(ztid));
            Literal1.Text = "专题:" + strZt;
        }这样也正常执行。。        if (int.Parse(ztid) > 0)
            strZt = MenuClass.GetZtName(int.Parse(ztid));           Literal1.Text = "专题:" + strZt;这样也可以        if (int.Parse(ztid) > 0)
            strZt = MenuClass.GetZtName(int.Parse(ztid));
            Literal1.Text = "专题:" + strZt;这样怎么都能运行呢?

解决方案 »

  1.   

    呃~~~~~
    除非前面出现异常 抛出,你后面那句 无论怎么样都执行。
    你把if 后面那句写成 return;看看下面的还执行不?
    汗~~~~~~~~~~
      

  2.   

    汗。
    如果前面出现了异常就不会执行下面的!不过你的加try{}catch(){}
    如果你return啦!后面的肯定不会执行啊!
      

  3.   

    大括号表示是一个完整的流程,
    如果 if (int.Parse(ztid) <0)改成小于0
    那你就只能运行  这句了 Literal1.Text = "专题:" + strZt;
      

  4.   

    if后面一句是通过if判断而执行的
    后面的语句,是属于if外面的
      

  5.   

    if (int.Parse(ztid) > 0) 
    strZt = MenuClass.GetZtName(int.Parse(ztid)); //这句是当if后面的表达式为true时执行Literal1.Text = "专题:" + strZt; //这句与if无关,属于if语句以后的代码了
      

  6.   

    事实上若int.Parse(ztid) > 0为真,只运行 
    strZt = MenuClass.GetZtName(int.Parse(ztid));
    事实上若int.Parse(ztid) > 0为假,是不会运行 
    strZt = MenuClass.GetZtName(int.Parse(ztid));后面那句是Literal1.Text = "专题:" + strZt;
    是无论是否为真都会运行的,这好好想想吧!呵呵