黑马程序员技术交流社区
标题:
return,try,catch,finally
[打印本页]
作者:
喻健
时间:
2012-5-24 10:18
标题:
return,try,catch,finally
return 语句的使用,还有一点不是很理解。下面这个例子,最终的返回值是
a
DoIt
b
10
这个10到底是怎么出来的,谁来给解释解释?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace try与Return
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(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);//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
i++;
//Console.WriteLine(i);
//return i;
}
}
static Person GetPerson()
{
Person p1 = new Person();
p1.Age = 8;
try
{
p1.Age++;
Console.WriteLine("a");
return p1;
//return DoIt(i);//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
p1.Age++;
//Console.WriteLine(i);
//return i;
}
}
}
class Person
{
public int Age { get; set; }
}
}
复制代码
作者:
喻健
时间:
2012-5-24 10:39
明白了,Main函数中的Console.WriteLine(GetIt());调用了GetIt(),而这个最后是有个返回值,最终把它打印出来了。
return,try,catch,finally 的执行方法如下:
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
finally { //不管什么情况都会执行,
包括try catch 里面用了
return
,可以理解为只要执行了try或者catch,就一定会执行 finally }
作者:
丁官林
时间:
2012-5-24 10:43
本帖最后由 丁官林 于 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;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2