避免在finally撰写无效代码:
先提出一个问题,即:是否存在一种打破try- finally执行顺序的情况。答案是:没有 (除非应用程序本身因为某些很少出现的特殊情况在try块中退出)。你应该始终认为finally内代码会在方法return之前被执行,哪怕return是在try块中。但需要区分引用类型变量和值类型变量在 finally中会导致不同结果 。
它返回的将是1。代码中,i=2实际上是一段无效代 码 ,如果编译采用Release模式,编译器会直接将i=2删除,它不会为其生成对应的IL代码。但是:
TestUserReturnInTry方法返回的User中,Name的值已经改变为Rose了。