-
Period: to
C# 1.0
Microsoft liberó la primera versión de C# con Visual Studio 2002. El uso del código manejado fue introducido en esta versión. C# 1.0 fue el primer lenguaje que el desarrollador cambió para construir aplicaciones .NET.
Las principales características de C# 1.0 incluían lo siguiente:
Clases
Structs
Interfaces
Eventos
Propiedades
Delegados
Operadores y expresiones
Instrucciones
Atributos -
Period: to
c#2.0
Aquí las cosas empiezan a ponerse interesantes. Echemos un vistazo a algunas de las principales características de C# 2.0, que se publicó en 2005 junto con Visual Studio 2005:
Genéricos
Tipos parciales
Métodos anónimos
Tipos de valores que aceptan valores NULL
Iteradores
Covarianza y contra varianza
Otras características de C# 2.0 agregaron capacidades a las características existentes:
Accesibilidad independiente de captador o establecedor
Conversiones de grupos de métodos (delegados) -
Period: to
C#3.0
Estableció C# como un lenguaje de programación realmente formidable. Echemos un vistazo a algunas de las principales características de esta versión:
Propiedades implementadas automáticamente
Tipos anónimos (Guía de programación de C#).
Expresiones de consulta
Expresiones lambda
Árboles de expresión
Métodos de extensión
Variables locales con asignación implícita de tipos
Métodos parciales
Inicializadores de objeto y colección -
Period: to
C# 4.0
Esta versión tuvo que lidiar con el carácter innovador que había adquirido la versión 3.0. Con la versión 3.0, el lenguaje de C# dejó de estar a la sombra de Java y alcanzó una posición prominente. El lenguaje se estaba convirtiendo rápidamente en algo elegante.
La siguiente versión introdujo algunas nuevas características interesantes:
Enlace dinámico
Argumentos opcionales/con nombre
Covariante y contravariante de genéricos
Tipos de interoperabilidad insertados -
Period: to
C#5.0
La versión 5.0 de C#, publicada con Visual Studio 2012, era una versión centrada del lenguaje. Casi todo el trabajo de esa versión se centró en otro concepto de lenguaje innovador: el modelo async y await para la programación asincrónica. Estas son las principales características: Miembros asincrónicos
Atributos de información del llamador -
Period: to
C# 6.0
se publicaron muchas características menores que aumentaron la productividad de la programación de C#. Estas son algunas: Importaciones estáticas
Filtros de excepciones
Inicializadores de propiedades automáticas
Miembros de cuerpo de expresión
Propagador de null
Interpolación de cadenas
operador nameof
Entre las otras características nuevas se incluyen estas: Inicializadores de índice
Await en bloques catch y finally
Valores predeterminados para las propiedades solo de captador -
Period: to
C#7.0
C# versión 7.0 se comercializó con Visual Studio 2017. Esta versión tiene algunas cosas interesantes y evolutivas en la misma línea que C# 6.0, pero sin el compilador como servicio. Estas son algunas de las nuevas características: Variables out
Tuplas y deconstrucción
Coincidencia de patrones
Funciones locales
Miembros con forma de expresión expandidos
Variables locales de tipo ref
Devoluciones de referencias -
Period: to
C#7.1
tres nuevas características de lenguaje y un nuevo comportamiento del compilador. asyncMain method
El punto de entrada de una aplicación puede tener el modificador async.
Expresiones literales default
Se pueden usar expresiones literales predeterminadas en expresiones de valor predeterminadas cuando el tipo de destino se pueda inferir.
Nombres de elementos de tupla inferidos
En muchos casos, los nombres de elementos de tupla se pueden deducir de la inicialización de la tupla. -
Period: to
C# 7.2
C#7.2 agregó varias características de lenguaje pequeñas: Inicializadores en matrices stackalloc.
Uso de instrucciones fixed con cualquier tipo que admita un patrón.
Acceso campos fijos sin anclar.
Reasignación de variables locales ref.
Declaración de tipos readonly struct para indicar que una estructura es fija y que debería pasarse como parámetro in a los métodos de su miembro.
y otras mas. -
Period: to
C# 7.3
Las siguientes características nuevas admiten el tema del mejor rendimiento para código seguro: Puede tener acceso a campos fijos sin anclar.
Puede volver a asignar variables locales ref.
Puede usar inicializadores en matrices stackalloc.
Puede usar instrucciones fixed con cualquier tipo que admita un patrón.
Puede usar restricciones más genéricas. -
Period: to
C#8.0
Miembros de solo lectura
Métodos de interfaz predeterminados
Mejoras de coincidencia de patrones:
Expresiones switch
Patrones de propiedades
Patrones de tupla
Patrones posicionales
Declaraciones using
Funciones locales estáticas
Estructuras ref descartables
Tipos de referencia que aceptan valores null
Secuencias asincrónicas
Índices y rangos
Asignación de uso combinado de NULL
Tipos construidos no administrados
Stackalloc en expresiones anidadas
Mejora de las cadenas textuales interpoladas -
Period: to
C#9.0
Registros
Establecedores de solo inicialización
Instrucciones de nivel superior
Mejoras de coincidencia de patrones
Rendimiento e interoperabilidad
Enteros con tamaño nativos
Punteros de función
Supresión de la emisión de la marca localsinit
Características de ajuste y finalización
Expresiones new con tipo de destino
Funciones anónimas static
Expresiones condicionales con tipo de destino
Tipos de valor devueltos de covariante
Compatibilidad con extensiones GetEnumerator para bucles -
Period: to
C#10.0
Structs de registross
Mejoras de tipos de estruct
Controladores de cadena interpolada
Directivas global using
Declaración de espacios de nombres con ámbito de archivo
Patrones de propiedades extendido
Mejoras en expresiones lambda
Se permiten cadenas interpoladas const
Lostipos de registro pueden sellar ToString()
Asignación definitiva mejorada
Se permite la asignaciónyla declaración en la misma desconstrucción
Se permite el atrib. AsyncMethodBuilder en los método
Atrib. CallerArgumentExpression