Переменная не увеличивается в C # Release x64

Может ли кто-нибудь объяснить мне, почему этот фрагмент кода работает хорошо, когда я выполняю его на платформе x86 и почему это не удается на x64?

Результаты:

  • Отладка x86: 12345678910
  • Отладка x64: 12345678910
  • Выпуск x86: 12345678910
  • Выпуск x64: 1111111111

Если я что-то поменяю, например, удаление одна из неиспользуемых переменных, или если я удалю бесполезный цикл for после p_lFirstId ++, странное поведение исчезнет.

Я обнаружил, что изменение "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());
    } 
}
8
задан Filimindji 17 January 2011 в 16:13
поделиться