sólo para añadir: los tipos anónimos son convertidos por el compilador para una objeto real Por lo que el código se cambia a algo equivalente a esto (muy simplificado, sólo para demostrar que el compilador creará una clase real):
internal sealed class AnonymousClass1
{
internal string Text { get; set; }
internal int Count { get; set; }
internal string Link { get; set; }
}
y su código se cambiará entonces a:
obj.DataSource = new AnonymousClass1[]
{
new AnonymousClass1 {Text = "Silverlight", Count = 10, Link="/Tags/Silverlight" },
new AnonymousClass1 {Text = "IIS 7", Count = 11, Link="http://iis.net" },
new AnonymousClass1 {Text = "IE 8", Count = 12, Link="/Tags/IE8" },
new AnonymousClass1 {Text = "C#", Count = 13, Link="/Tags/C#" },
new AnonymousClass1 {Text = "Azure", Count = 13, Link="?Tag=Azure" }
};
En uno de mis programas, que tienen código como este (simplificado!):
var myObjects = new []{
new { Id = Guid.NewGuid(), Title = "Some Title", Description = string.Empty },
new { Id = Guid.NewGuid(), Title = "Another Title", Description = string.Empty },
new { Id = Guid.NewGuid(), Title = "Number 3", Description = "Better than No2, but not much" }
}
foreach(var myObject in myObjects) {
DoSomeThingWith(myObject.Title);
}
esto funciona porque es simplemente otra clase (incluso consigo IntelliSense) detrás de las escenas. El beneficio es obviamente que me salvé de crear una clase para este objeto. En mi ejemplo, todos los objetos deben tener el mismo aspecto también.(Obviamente, hacer esto para cualquier miembro público sería una mala idea ya que el compilador podría cambiar el nombre de la clase anónima si agrega/elimina algo)
Por ahora creo que es seguro cambiar el título de la pregunta de "C# multidimensional array "a algo más apropiado que involucre" array of anonymous objects "o algo así. – Zano