Может ли кто-нибудь объяснить мне, почему этот кусок кода работает хорошо, когда я выполняю его на платформе 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());
}
}