我凭记忆写的哦,有语法错误的直接忽略。。具体原题有好几个选项我就懒的列了 static void Main(string[] args)
{
  Console.Write(Test());
}static int Test()
{
   int i=1;
   try
   {
      Console.Write(i++);
      return i;
   }
   finally{
     Console.Write(++i);
  }
}
//输出来的结果是啥????
靠查资料的,禁止在这边回答逞能,禁止用工具运行得结果贴答案

解决方案 »

  1.   

    考点就是 return 后的finally会不会执行。还有就是i++和++i。
    结果很意外。靠DEBUG得到的答案,就不卖弄了,也不贴出来了。
    学到了,虽然实际很少用到,但是正如楼上的一位哥们所言 很多出题的放弃治疗。学点奇葩的有备无患。
      

  2.   


     static void Main(string[] args)
    {
      Console.Write(Test());
    }
     
    static int Test()
    {
       int i=1;
       try
       {
          Console.Write(i++);//这句先运行,输出1,i++结果在本句不执行+
          return i;  //这句最后执行,但是返回的i是只经过了i++操作的i,所以此时返回的i为2
       }
       finally{
         Console.Write(++i); //第二句执行这个,此时i已经为2了,++i操作使得输出为3,++i在本句内就可以执行+
      }
    }
      

  3.   

    开始 先执行try里面的writeline 由于是i++,所以是先打印出i的值之后i在自增  所以打印出1  接着i加1,然后  编译器会用个变量比如j来保存i的值(由于i是int类型的,所以j保存的只是i值的一个复制,也就是说j不会随着i值得变化而变化,此时j为2,也就是Test()方法最后返回j值即为2),此时并不会return,而是去执行finally,finally里面由于是++i,先执行自增运算,在打印i值,由于此时i为2,自增之后是3,所以输出3。综上,最后输出结果为132.
      

  4.   

    可能是1,,3,2 没运行,   i++是打印1,因为先打印再运算 ,所以返回2,finally(++i)是先运算再打印,所以是3,  没把握的是finally 里不知道有没有改变 return 的值。
      

  5.   

    1  3   3  finally应该是在return之前执行
      

  6.   

    先执行try中的Console.Write,所以是1
    再执行finally中的Console.Write,此时是3
    最后返回i,执行Main中的Console.Write,感觉是2,但内部机理不是完全清楚。
      

  7.   

    1   3   2 才对!!不过原理应该没错把···finally在return之前执行
      

  8.   


    static void Main(string[] args)
            {
                Console.Write(Test());
            }        static int Test()
            {
                int i = 1;
                try
                {
                    Console.Write(i++);
                }
                finally
                {
                    Console.Write(++i);
                }
                return i;
            }
    这样写就是1,3,3了,因此可以说明如果return i放在try里时,Test()的值已经生成了,即2,如果return i放在try外时,Test()的值还需要经过++i运算才行,即3
      

  9.   


    错了,如果将return i放在try外面就是1,3,3
      

  10.   

    以为是 1 2 3 。
    原来 finally后才执行 return  强大·
      

  11.   

    i++,++i 在我感觉只是语法糖
    用i=i+1 看的更清楚
      

  12.   

    那是什么答案啊,前加新值,后加原值参与运算,不过I值都变,finally在return 之前,1 3 3还是 1 3 2
      

  13.   

    finally中计算后的i值,不会影响try中返回的i值吗?
      

  14.   


    static int Test()
    {
       int i=1;
       try
       {
          Console.Write(i++);//打印1,不解释 
          return i;//在这里把i复制到寄存器里用于返回,此时寄存器里的值是2(和i不是同一个变量)。
       }
       finally{
         Console.Write(++i);//打印3,不解释 
      }
    }上述代码执行顺序try,finally,return
    故打印1,3,2(寄存器里的值,不是i)
      

  15.   

    2,3,3
    我觉得先输出Console.Write(i++);不管你i++还是++i都会先运行完后才输出吧所以是2
    然后return i;
    到底是先Console.Write(test())还是finally我觉得是finally 所以是3
    然后Console.Write(test())返回的i已经被finally加一了所以是3
      

  16.   

    语法错误 private static int getNum(){
    int i = 1;
    try {
    System.out.println("num:"+ i++);
    return i;
    } catch (Exception e) {
    // TODO: handle exception
    }
    finally{
    System.out.println("number"+ ++i);
    }
    return i;
    }
      

  17.   

    return i;  少了个这个
      

  18.   

    函数test 要首先声明吧,要不然编译报错!!!
      

  19.   

    1,3
    finally在return之前执行.
      

  20.   

    最后答案应该是1,3,3~~~~前面漏了个return的值。
      

  21.   

    自己动手调试下结果就知道了~~~只能跟你说原题跟面试题我是少写了一个Console.Write,不过原理都一样。只是答案变成了三个数字输出。。所以题目也没错。。
      

  22.   

    看来是c++的兄弟。
    c#是完全面向对象 和c++即面向过程又有部分oo特性不同。