变量在C#Release x64中没有递增
有人可以向我解释为什么当我在x86平台上执行它以及为什么它在x64上失败时这段代码表现良好?
结果:
- x86调试:12345678910
- x64调试:12345678910
- x86发布:12345678910
- x64发布:1111111111
如果我改变某些东西,比如删除一个未使用的变量,或者如果我在p_lFirstId ++之后删除无用的for循环,那么奇怪的行为就会消失。
我发现在我的发布配置中将“pdb-only”更改为“full”,它再次起作用。
如果你直接从visual studio运行代码,它也做得很好。
这是JIT Compiler的错误吗?
先感谢您。
class Program { static void Main(string[] args) { Test(null, null, null, 0, 1); } public static void Test( List liste, List unused1, string unused2, int unused3, long p_lFirstId) { liste = new List(); 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中的一个错误。 我建议联系Microsoft并要求他们在下一个版本中更正此错误。