分类目录

链接

2011 年 12 月
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
一个有关 finally 的有趣问题
.NET 评论(1) 阅读(2,570)

看看下面的代码,会返回几?

static int Test()
{
    int x = 1;
    try
    {
        return x;
    }
    finally 
    {
        x = 2;
    }
}

结果是 1,尽管 finally 内的代码会在方法结束前被调用,但是并没有改变输出结果,为什么会这样?看看编译器是怎么做的?

反编译代码

private static int Test()
{
    int num2;
    int num1 = 1;
    try
    {
        num2 = num1;
    }
    finally
    {
        num1 = 2;
    }
    return num2;
}

看来编译器还是动了一番心思的 。所以 finally 内的代码只适合用来做些清理工作,正经事还是不要放在这了。
这个问题虽然有点无聊,但是很考验基础知识是否学扎实了。建议放在面试题里面。

============ 欢迎各位老板打赏~ ===========

【上篇】
【下篇】

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:一个有关 finally 的有趣问题 | Bruce's Blog

一个有关 finally 的有趣问题:目前有1 条留言

  1. 重生大帝 : 2012年04月25日下午 5:31 回复

    呵呵,有点意思!1

发表评论

留言无头像?