下面的代码在Visual Studio内运行和在Visual Studio外运行时给出不同的输出。我正在使用Visual Studio 2008并针对.NET 3.5进行开发。我还尝试过.NET 3.5 SP1。
在Visual Studio外运行时,JIT应该会启动。要么(a)有一些微妙的C#问题我没有注意到,要么(b)JIT实际上出现了错误。我怀疑JIT可能会出错,但是我已经没有其他选择了...
在Visual Studio内运行时的输出:
在Visual Studio外运行时,JIT应该会启动。要么(a)有一些微妙的C#问题我没有注意到,要么(b)JIT实际上出现了错误。我怀疑JIT可能会出错,但是我已经没有其他选择了...
在Visual Studio内运行时的输出:
0 0,
0 1,
1 0,
1 1,
在 Visual Studio 之外运行 Release 模式时的输出:
0 2,
0 2,
1 2,
1 2,
为什么呢?
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();
}
}
}