Der folgende Code liefert unterschiedliche Ausgaben, wenn die Version innerhalb von Visual Studio und außerhalb von Visual Studio ausgeführt wird. Ich verwende Visual Studio 2008 und ziele auf .NET 3.5. Ich habe auch versucht, .NET 3.5 SP1.
Bei der Ausführung außerhalb von Visual Studio sollte das JIT aktiviert werden. Entweder (a) gibt es etwas subtiles vor sich geht mit C #, die ich vermisse oder (b) die JIT ist tatsächlich in Fehler. Ich bin zweifelhaft, dass die JIT falsch gehen kann, aber ich bin aus anderen Möglichkeiten...
Ausgabe bei Ausführung in Visual Studio:
0 0,
0 1,
1 0,
1 1,
Ausgabe beim Ausführen der Version außerhalb von Visual Studio:
0 2,
0 2,
1 2,
1 2,
Was ist der Grund dafür?
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();
}
}
}