变量在C#Release x64中没有递增

Fil*_*dji 8 c# 64-bit jit

有人可以向我解释为什么当我在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<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());
    } 
}
Run Code Online (Sandbox Code Playgroud)

bbo*_*sak 3

这是 CLR 中的一个错误。我建议联系微软并要求他们在下一个版本中纠正这个错误。