Finally-操作返回值
阿新 • • 發佈:2017-09-26
acc finall line style 返回值 console urn hide images
Finally中操作返回值會出現一個問題?值沒有被改變?
1 static int M1() 2 { 3 int result = 100; 4 try 5 { 6 result = result + 1; 7 //======引發異常的代碼========== 8 int x = 10, y = 0; 9 Console.WriteLine(x / y); 10 //View Code======引發異常的代碼========== 11 return result; 12 } 13 catch 14 { 15 Console.WriteLine("catch被執行了"); 16 result = result + 1; 17 return result; 18 } 19 finally 20 { 21 Console.WriteLine("====finally被執行了================="); 22 result = result + 1; 23 } 24 }
結果是:
為什麽會這樣呢?不是說finally中的代碼無論如何都會被執行嗎?那就要看編譯器會對我們的代碼做了什麽?
Reflector反編譯的代碼: 會把我們要返回的值在try-catch中操作之後賦給一個全局變量,並且返回。finally中也操作了num,但是沒有賦值給num4。
對於引用類型是怎樣的呢?這個大家可以試試,我就不寫了,比較基礎
Finally-操作返回值