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