c# - 变量在 C# Release x64 中不递增

标签 c# 64-bit jit

有人可以向我解释为什么这段代码在 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 中的错​​误。我建议联系 Microsoft 并要求他们在下一个版本中更正此错误。

关于c# - 变量在 C# Release x64 中不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715278/

相关文章:

c# - 获取表达式参数名称

compilation - 即时编译与提前编译相比有何优点?

java - 没有同步顺序的程序

ios - SIGSEGV 和 SIGBUS 使用 Xamarin.iOS 统一 API 崩溃

math - 41 位可以表示多少年的毫秒时间戳?

c - c结构的64位对齐/填充?

visual-studio-2005 - 禁用WerFault.exe/“Application Has Stopped Working”崩溃对话框

C# 使用 iTextSharp 将位图保存为 PDF

c# - 如何将表格数据绑定(bind)到下拉列表?

c# - "The remote server returned an error: (417) Expectation Failed."