Der folgende Code gibt eine andere Ausgabe aus, wenn die Version in Visual Studio und die Version außerhalb von Visual Studio ausgeführt wird. Ich verwende Visual Studio 2008 und ziele auf .NET 3.5 ab. Ich habe auch .NET 3.5 SP1 ausprobiert.
Wenn Sie außerhalb von Visual Studio ausgeführt werden, sollte die JIT aktiviert werden. Entweder (a) mit C # ist etwas Feines los, das mir fehlt, oder (b) die JIT ist tatsächlich fehlerhaft. Ich bin mir nicht sicher, ob die GEG schief gehen kann, aber mir gehen andere Möglichkeiten aus ...
Ausgabe bei Ausführung in Visual Studio:
0 0,
0 1,
1 0,
1 1,
Ausgabe beim Ausführen einer Version außerhalb von Visual Studio:
0 2,
0 2,
1 2,
1 2,
Was ist der Grund?
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();
}
}
}