Juste pour ajouter: les types anonymes sont convertis par le compilateur à un vrai objet. Ainsi, le code sera changé pour quelque chose d'équivalent de ce (très simplifié, pour montrer que le compilateur va créer une classe réelle):
internal sealed class AnonymousClass1
{
internal string Text { get; set; }
internal int Count { get; set; }
internal string Link { get; set; }
}
Et votre code sera alors changé:
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" }
};
Dans l'un de mes programmes, j'ai le code comme ceci (simplifié!):
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);
}
cela fonctionne parce qu'elle est juste une autre classe (je reçois même IntelliSense) dans les coulisses. L'avantage est évidemment que je me suis juste sauvé de créer une classe pour cet objet. Dans mon exemple, tous les objets doivent avoir la même apparence.(Évidemment, faire cela pour n'importe quel membre du public serait une mauvaise idée car le compilateur pourrait changer le nom de la classe anonyme si vous en ajoutez/en supprimez)
Maintenant, je pense qu'il est sûr de changer le titre de la question de "C# multidimensionnel tableau "à quelque chose de plus approprié impliquant" tableau d'objets anonymes "ou un tel. – Zano