Como o ToString em um tipo anônimo funciona?
Eu estava mexendo com tipos anônimos, e eu acidentalmente enviei para o console. Parecia basicamente como eu defini isso.
Aqui está um pequeno programa que o reproduz:
using System;
class Program
{
public static void Main(string[] args)
{
int Integer = 2;
DateTime DateTime = DateTime.Now;
Console.WriteLine(new { Test = 0, Integer, s = DateTime });
Console.ReadKey(true);
}
}
Agora, a saída é:
{ Test = 0, Integer = 2, s = 28/05/2013 15:07:19 }
Eu tentei usar o dotPeek para entrar na montagem para descobrir o porquê, mas não ajudou.[1] Aqui está o código dotPeek'd:
// Type: Program
// Assembly: MyProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Assembly location: Not telling you! :P
using System;
internal class Program
{
public static void Main(string[] args)
{
Console.WriteLine((object) new
{
Test = 0,
Integer = 2,
s = DateTime.Now
});
Console.ReadKey(true);
}
}
Então não é muito diferente, afinal.
Então, como isso funciona? Como é que sai assim?
Notas:
[1]: Eu esqueci de ativar "Mostrar código gerado pelo compilador", essa é a razão pela qual eu não entendi como funciona.