Aşağıdaki kod, sürümü Visual Studio içinde çalıştırırken ve sürümü Visual Studio dışında çalıştırırken farklı çıktı verir. Visual Studio 2008 kullanıyorum ve .NET 3.5 hedefliyorum. Ayrıca .NET 3.5 SP1'i de denedim.
Visual Studio dışında çalışırken, JIT tekmelemek gerekir. Ya (a) C # ile eksik devam ince bir şey var ya da (b) JIT aslında hatalı. JIT'in yanlış gidebileceğinden şüpheliyim, ancak diğer olasılıklar tükeniyor ...
Visual Studio içinde çalışırken çıktı:
0 0,
0 1,
1 0,
1 1,
Visual Studio dışında yayın çalıştırırken çıktı:
0 2,
0 2,
1 2,
1 2,
Sebebi nedir?
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();
}
}
}