[警告]VS2003 (.NET v1.1) comiler bug
請看下列的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)
推
10/19 00:09, , 1F
10/19 00:09, 1F
→
10/24 01:37, , 2F
10/24 01:37, 2F