SWITCH(...) 

      CASE   A:
        int i=0;
break;
      CASE   B:... 
        int i=1;
break;

在不同的case中 可以重复定义 i 变量 吗?为什么?

解决方案 »

  1.   

    不可以,switch代码块中只能定义一次i,否则就重复了。
      

  2.   

    真的很奇怪,程序已按 case 分段落了,为什么变量不能单独定义?
      

  3.   


            string a="a";  
            switch(a) 
            { 
                case   "a":
                    int i=0;
                    break;
                case   "b":
                    int i=1;
                    break;
            } 
    已在此范围定义了名为“i”的局部变量
    局部变量,不可以重命名。
    可以多次赋值。
    另外C#里是区分大小写的
      

  4.   


            string a="b";
            int i;
            switch (a) 
            { 
                case   "a":
                    i = 0;
                    Response.Write(i);
                    break;
                case   "b":
                    i=1;
                    Response.Write(i);
                    break;
            } 变量不可以同名。你可以这样使用。
      

  5.   


     string a="a";  
     int i=0;
            switch(a) 
            { 
                case   "a":
                    i=0;             
                    break;
                case   "b":
                    i=1;
                    break;
            } 
      

  6.   

     string a="a";  
            switch(a) 
            { 
                case   "a":
                    if(1==1)
    {int i=0;
    }
                    break;
                case   "b":
    if(2==2)
    {
                    int i=1;
    }
                    break;
            } 这样定义 i 可以 重复吗
      

  7.   

    你要分清,块整个概念,一个switch 就是一个块,块的局部变量,只能定义一次。
      

  8.   

    switch/for/while这些才是语句块, case只是一个分支,不算一个语句块单位。在一个语句块内,定义临时变量不能与其他变量有冲突,也不允许重复声明。
      

  9.   

    我原本也以为可以一个case定一个局部变量呢.
    现在知道了
    学习了``
    嘿嘿`
      

  10.   

    可以选择在switch前面定义,或者用{}括起
      

  11.   

    主要因为switch里面的两个case由于语句不同可能都被执行,不像if else
    比如switch(a)
    {
    case 1:
    int i = 0;
    case 2:
    int j = 0;
    }
    当a == 1时,i 和 j 都会被定义,两个case都被执行,只要不遇到break,所有的都要被执行