다음 코드는 Visual Studio에서 릴리스를 실행하고 Visual Studio 외부에서 릴리스를 실행할 때 다른 출력을 제공합니다. Visual Studio 2008을 사용하고 .NET 3.5를 대상으로합니다. .NET 3.5 SP1도 시도했습니다.
Visual Studio 외부에서 실행할 때 JIT가 시작됩니다. (a) C #과 관련하여 미묘한 부분이 있거나 (b) JIT에 실제로 오류가 있습니다. 나는 JIT가 잘못 될 수 있다고 의심하지만 다른 가능성이 부족합니다 ...
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();
}
}
}