Le code suivant donne une sortie différente lors de l'exécution de la version dans Visual Studio et de l'exécution de la version en dehors de Visual Studio. J'utilise Visual Studio 2008 et je cible .NET 3.5. J'ai également essayé .NET 3.5 SP1.
Lors de l'exécution en dehors de Visual Studio, le JIT doit démarrer. Soit (a) il se passe quelque chose de subtil avec C # qui me manque ou (b) le JIT est en fait en erreur. Je doute que le JIT puisse mal tourner, mais je suis à court d'autres possibilités ...
Sortie lors de l'exécution dans Visual Studio:
0 0,
0 1,
1 0,
1 1,
Sortie lors de l'exécution d'une version en dehors de Visual Studio:
0 2,
0 2,
1 2,
1 2,
Quelle est la raison?
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();
}
}
}