Complétez la prise pour mon propre livre, mais j'espère ne pas gratuit: obtenir la version d'accès précoce du second edition of C# in Depth. Il saute C# 1, mais va dans le détail sur toutes les fonctionnalités de C# 2, 3 et 4.
Si vous voulez juste une liste de fonctions cependant, de l'annexe C:
C# 2.0:
Les principales fonctionnalités de C# 2 étaient les génériques, les types Nullable, les méthodes anonymes et d'autres améliorations liées aux délégués et les blocs d'itérateur. De plus, plusieurs fonctionnalités plus petites ont été introduites: les types partiels, les classes statiques, les propriétés avec différents modificateurs d'accès pour les getters et setters, les alias namespace, les directives pragma et les buffers de taille fixe.
C# 3.0:
C# 3 principalement construite vers LINQ, bien que de nombreuses fonctionnalités sont utiles ailleurs. Les propriétés automatiques, le typage implicite des tableaux et des variables locales, les objets et initialiseurs de collection et les types anonymes sont tous traités dans le chapitre XREF ch8. Les expressions Lambda et les arborescences d'expression étendaient la progression liée aux délégués effectuée dans la version 2.0, et les méthodes d'extension fournissaient le dernier ingrédient pour les expressions de requête. méthodes partielles n'ont été ajoutés en C# 3, bien que les types partiels étaient eux-mêmes en C# 2. Comme Marc souligne dans les commentaires, l'inférence de type générique a reçu un coup de pouce considérable en C# 3.
C# 4.0:
C# 4.0 a quelques caractéristiques visant à l'interopérabilité, mais n'a pas la même de C# 3.0. Encore une fois, il y a une distinction assez claire entre les "petites" caractéristiques (arguments nommés, paramètres optionnels , meilleure interopérabilité COM, variance générique) et l'énorme caractéristique de typage dynamique .
J'ai un "guide de bluffeurs" pour C# 2 et un autre pour C# 3, mais je n'ai pas fait l'équivalent pour C# 4 mais j'ai peur.
Beau résumé (bien sûr). La seule chose que j'ajouterais (sans me gratter la tête) est l'inférence de type générique beaucoup plus forte dans C# 3.0 - il est étonnamment simple d'écrire accidentellement du code qui n'est pas 2.0 compatible. –
@Marc: Ooh, vrai. Va ajouter ça. –
"alias d'espace de noms"? Voulez-vous dire des alias de type ou des alias externes? – Timwi