Por que o .NET / C # não otimiza a recursão de chamada de cauda?
eu encontreiessa questão sobre quais idiomas otimizam a recursão da cauda. Por que o C # não otimiza a recursão da cauda, sempre que possível?
Para um caso concreto, por que esse método não é otimizado em um loop (Visual Studio 2008 32 bits, se isso importa) ?:
private static void Foo(int i)
{
if (i == 1000000)
return;
if (i % 100 == 0)
Console.WriteLine(i);
Foo(i+1);
}