一个有关 finally 的有趣问题
看看下面的代码,会返回几?
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 内的代码只适合用来做些清理工作,正经事还是不要放在这了。
这个问题虽然有点无聊,但是很考验基础知识是否学扎实了。建议放在面试题里面。
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · The instance of entity type ‘Customer’ cannot be tracked because another instance with the same key value for {‘Id’} is already being tracked.
- · .NET8实时更新nginx ip地址归属地
- · 解决.NET Blazor子组件不刷新问题
- · .NET8如何在普通类库中引用 Microsoft.AspNetCore
- · .NET8 Mysql SSL error
- · ASP.NET Core MVC的Razor视图渲染中文乱码的问题
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification
- · Asp.Net Core Filter 深入浅出的那些事-AOP
呵呵,有点意思!1