2010-06-23 6 views
6

Est-il mauvais d'utiliser des types anonymes dans C#?Performances des types anonymes en C#

+1

Voir [Comment les types anonymes doivent-ils être utilisés dans C#?] (Http://stackoverflow.com/questions/48668/how-should-anonymous-types-be-used-in-c) –

Répondre

11

Les types anonymes sont-ils en eux-mêmes mauvais? Non. S'ils étaient l'équipe C# n'aurait certainement pas perdu leur temps en l'ajoutant à la langue. Sous le capot, ils se résument à des types CLR standard.

Les types anonymes, comme pratiquement tous les autres langages, peuvent être abusés au point d'être non-performants. Sûr.

7

Ils sont comme les autres types, en termes de performances.

modifier

Pour être plus clair, je aurais dû dire qu'ils accomplissent exactement comme d'autres types parce qu'ils sont exactement comme les autres types, à l'exception du fait que le compilateur génère le nom. La seule façon dont les performances souffriraient si vous transmettez une instance du type anonyme à une autre portée, où la réflexion ou dynamic devrait être utilisée juste pour accéder aux propriétés. Ce serait coûteux car il implique une liaison tardive pour tout résoudre au moment de l'exécution.

15

Non, ce n'est pas le cas. Ce sont des classes générées par code à compiletime et fonctionnent aussi bien que les classes normales.

5

Un type anonyme en C# est toujours un type statique et l'accès à ses méthodes et propriétés est résolu par le compilateur. La performance est comparable aux types explicites.

+2

Comparable ou identique? –

+4

@Steven Sudit: il n'y a pas de type anonyme dans la CLI. En fait, les types anonymes en C# ne sont qu'une fiction: ils sont en fait des types nommés comme les autres, car c'est le seul type que l'interface CLI supporte. La seule différence est que leur nom est généré par un générateur de nombres aléatoires au lieu d'un humain. Donc, oui, la performance des types anonymes est identique aux types nommés car les types anonymes * sont des types nommés *. –

+1

@ Jörg: Merci d'avoir épelé ça ici. Si cela ne vous dérange pas, je vais voler votre réponse. –

5

Ce n'est pas mauvais, parfois c'est pratique. Par exemple, lors de l'utilisation de Linq, au lieu de créer une classe qui ne sera utilisée qu'une seule fois, il est préférable d'utiliser des types anonymes.