作者leicheong (睡魔)
看板C_Sharp
标题[警告]VS2003 (.NET v1.1) comiler bug
时间Thu Oct 18 10:14:54 2007
请看下列的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)
1F:推 PsMonkey:囧推.... Orz 10/19 00:09
2F:→ sintsu:这bug怪得有点莫名... 10/24 01:37