Completo complemento para mi propio libro, pero con suerte no gratuito: obtenga la versión de acceso anticipado del second edition of C# in Depth. Se salta C# 1, pero entra en detalles sobre todas las características de C# 2, 3 y 4.
Si lo que desea es una lista de características, sin embargo, del Apéndice C:
C# 2.0:
Las principales características de C# 2 fueron genéricos, tipos anulables, métodos anónimos y otras mejoras relacionadas con delegados y bloques de iteradores. Además, se introdujeron varias características más pequeñas: tipos parciales, clases estáticas, propiedades con diferentes modificadores de acceso para getters y setters, alias de namespace, directivas pragma y búferes de tamaño fijo.
C# 3.0:
C# 3 construido principalmente hacia LINQ, aunque muchas características son útiles en otros lugares. Las propiedades automáticas, la tipificación implícita de matrices y las variables locales, el objeto y los iniciadores de colecciones y los tipos anónimos se tratan en el capítulo XREF ch8. Las expresiones Lambda y los árboles de expresión extendieron el progreso relacionado con el delegado realizado en la versión 2.0, y los métodos de extensión proporcionaron el último ingrediente para las expresiones de consulta. métodos parciales solamente se añadieron en C# 3, aunque los tipos parciales sí eran en C# 2. Como Marc señala en los comentarios, tipo genérico inferencia recibió un impulso considerable en C# 3.
C# 4.0:
C# 4.0 tiene algunas características destinadas a la interoperabilidad, pero no tiene la misma mentalidad de C# 3.0. De nuevo, existe una división razonablemente clara entre las características "pequeñas" (argumentos con nombre, parámetros opcionales , mejor interoperabilidad COM, varianza genérica) y la gran característica del tipado dinámico .
Tengo una "guía de bluffers" para C# 2 y otra para C# 3, pero no he hecho el equivalente para C# 4 pero me temo.
Buen resumen (por supuesto). Lo único que agregaría (sin rasguñarme un poco) es la inferencia de tipo genérico mucho más fuerte en C# 3.0 - es sorprendentemente simple escribir código accidentalmente que no es compatible con 2.0. –
@Marc: Ooh, cierto. Agregaré eso. –
"namespace aliases"? ¿Te refieres a escribir alias o alias externos? – Timwi