有人可以向我解释为什么这段代码在 x86 平台上执行时运行良好,而在 x64 平台上执行时失败吗?
结果 :
- x86 调试:12345678910
- x64 调试:12345678910
- x86 版本:12345678910
- x64 版本:1111111111
如果我改变一些东西,比如删除一个未使用的变量,或者如果我删除 p_lFirstId++ 之后无用的 for 循环,奇怪的行为就会消失。
我发现在我的发布配置中将“pdb-only”更改为“full”,它又可以工作了。
如果直接从 Visual Studio 运行代码,它也表现得很好。
这是 JIT 编译器错误吗?
先感谢您。
class Program
{
static void Main(string[] args)
{
Test(null, null, null, 0, 1);
}
public static void Test(
List<string> liste, List<string> unused1,
string unused2, int unused3, long p_lFirstId)
{
liste = new List<string>();
StringBuilder sbSql = new StringBuilder();
for (int i = 0 ; i < 10 ; i++)
{
sbSql.Append(p_lFirstId);
p_lFirstId++;
foreach (string sColonne in liste)
{
}
}
System.Console.WriteLine(sbSql.ToString());
}
}
这是 CLR 中的一个错误。我建议联系微软并要求他们在下一个版本中纠正这个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)