A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 喻健 中级黑马   /  2012-5-24 10:18  /  2293 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

return 语句的使用,还有一点不是很理解。下面这个例子,最终的返回值是
a
DoIt
b
10
这个10到底是怎么出来的,谁来给解释解释?
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace try与Return
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.            Console.WriteLine(GetIt());
  12.             //Console.WriteLine(GetPerson().Age);
  13.             Console.ReadKey();
  14.         }

  15.         static int DoIt(int i)
  16.         {
  17.             Console.WriteLine("DoIt");
  18.             i++;
  19.             return i;
  20.         }

  21.         static int GetIt()
  22.         {
  23.             int i = 8;
  24.            try
  25.             {
  26.                 i++;
  27.                 Console.WriteLine("a");
  28.                 //return i;
  29.                 return DoIt(i);//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
  30.             }
  31.             finally
  32.             {
  33.                 Console.WriteLine("b");
  34.                 i++;
  35.                 //Console.WriteLine(i);
  36.                 //return i;
  37.             }
  38.         }

  39.         static Person GetPerson()
  40.         {
  41.             Person p1 = new Person();
  42.             p1.Age = 8;
  43.             try
  44.             {
  45.                 p1.Age++;
  46.                 Console.WriteLine("a");
  47.                 return p1;
  48.                 //return DoIt(i);//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
  49.             }
  50.             finally
  51.             {
  52.                 Console.WriteLine("b");
  53.                 p1.Age++;
  54.                 //Console.WriteLine(i);
  55.                 //return i;
  56.             }
  57.         }

  58.         
  59.     }

  60.     class Person
  61.     {
  62.         public int Age { get; set; }
  63.     }
  64. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

2 个回复

倒序浏览
明白了,Main函数中的Console.WriteLine(GetIt());调用了GetIt(),而这个最后是有个返回值,最终把它打印出来了。
return,try,catch,finally 的执行方法如下:

try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }

catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }

finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 丁官林 于 2012-5-24 10:46 编辑

static void Main(string[] args)
        {
          Console.WriteLine(GetIt());//这里你把调用GetIt()方法返回的值打印出来了,肯定会有个10!
//如果要想没有10就这样调用:
GetIt();

            //Console.WriteLine(GetPerson().Age);
            Console.ReadKey();
        }

        static int DoIt(int i)
        {
            Console.WriteLine("DoIt");
            i++;
            return i;
        }

        static int GetIt()
        {
            int i = 8;
           try
            {
                i++;
                Console.WriteLine("a");
                //return i;
                return DoIt(i);//这里返回 DoIt(i)的结果,而 这里调用DoIt(i)传入的是9,在 DoIt(i)里面++后return,肯定就是10!
            }
            finally
            {
                Console.WriteLine("b");
                i++;
                //Console.WriteLine(i);
                //return i;
            }
        }

点评

嗯 我已经弄懂了 上面已经回了帖的:handshake  发表于 2012-5-24 10:52

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马