看板 C_Sharp 關於我們 聯絡資訊
請看下列的code: public static void Main() { string status = ""; int i = 0; switch (i) { case 0: try { } catch { } finally { status += "Zero"; } break; case 1: status += " ********** OMG **********"; break; } Console.WriteLine(status); } 在Debug mode的執行結果為: Zero 在Release mode的執行結果為: Zero ********** OMG ********** 在拆解產生的執行碼後, 證實為compiler bug: public static void Main() { string str = ""; switch (0) { case 0: str = str + "Zero"; break; case 1: break; default: goto Label_0032; } str = str + " ********** OMG **********"; Label_0032: Console.WriteLine(str); } 由於Microsoft已經宣佈SP1為.NET v1.1的最後一個service pack, 估計 這問題修正的可能性不太. 目前在用.NET v1.1發佈軟體的人, 請在project manager把release build 的optimization關閉. 此bug已確認不存在於.NET v2.0或以上的compiler. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.134.126.84 ※ 編輯: leicheong 來自: 202.134.126.84 (10/18 10:16)
PsMonkey:囧推.... Orz 10/19 00:09
sintsu:這bug怪得有點莫名... 10/24 01:37