¿Cómo funciona ToString en un tipo anónimo?
Estaba jugando con tipos anónimos, y accidentalmente lo puse en la consola. Se veía básicamente como lo definí.
Aquí hay un programa corto que lo reproduce:
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);
}
}
Ahora, la salida es:
{ Test = 0, Integer = 2, s = 28/05/2013 15:07:19 }
Intenté usar dotPeek para entrar en el ensamblaje y descubrir por qué, pero no sirvió de nada.[1] Aquí está el 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);
}
}
Así que no es muy diferente, en absoluto.
¿Entonces, cómo funciona? ¿Cómo se produce de esa manera?
Notas:
[1]: Olvidé activar "Mostrar código generado por compilador", esa es la razón por la que no entendí cómo funciona.