Потенциальная ошибка в .NET JIT?

Следующий код дает различные результаты при выполнении в Visual Studio и вне его. Я использую Visual Studio 2008 и .NET 3.5. Я также попытался .NET 3.5 SP1.

При работе вне среды Visual Studio, JIT должен работать. Либо что-то происходит в C#, что я пропускаю или JIT дает ошибку./p>

Вывод при работе в Visual Studio:

    0 0,
    0 1,
    1 0,
    1 1,

Вывод при запуске выпуска вне среды Visual Studio:

    0 2,
    0 2,
    1 2,
    1 2,

Причина?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    struct IntVec
    {
        public int x;
        public int y;
    }

    interface IDoSomething
    {
        void Do(IntVec o);
    }

    class DoSomething : IDoSomething
    {
        public void Do(IntVec o)
        {
            Console.WriteLine(o.x.ToString() + " " + o.y.ToString()+",");
        }
    }

    class Program
    {
        static void Test(IDoSomething oDoesSomething)
        {
            IntVec oVec = new IntVec();
            for (oVec.x = 0; oVec.x < 2; oVec.x++)
            {
                for (oVec.y = 0; oVec.y < 2; oVec.y++)
                {
                    oDoesSomething.Do(oVec);
                }
            }
        }

        static void Main(string[] args)
        {
            Test(new DoSomething());
            Console.ReadLine();
        }
    }
}

Найдено 3 ответа:

.NET JIT potential error?

http://stackoverflow.com/questions/2056948/net-jit-potential-error

Посмотреть решение →