Kode berikut memberikan output yang berbeda saat menjalankan rilis di dalam Visual Studio, dan menjalankan rilis di luar Visual Studio. Saya menggunakan Visual Studio 2008 dan menargetkan .NET 3.5. Saya juga sudah mencoba .NET 3.5 SP1.
Saat menjalankan di luar Visual Studio, JIT harus masuk. Entah (a) ada sesuatu yang halus terjadi dengan C # yang saya lewatkan atau (b) JIT sebenarnya dalam kesalahan. Saya ragu bahwa JIT bisa salah, tapi saya kehabisan kemungkinan lain ...
Output saat berjalan di dalam Visual Studio:
0 0,
0 1,
1 0,
1 1,
Output saat menjalankan rilis di luar Visual Studio:
0 2,
0 2,
1 2,
1 2,
Apa alasannya?
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();
}
}
}