Compartir a través de


Relaciones entre las características de lenguaje y los tipos de biblioteca

La definición del lenguaje C# requiere una biblioteca estándar para tener determinados tipos y determinados miembros accesibles en esos tipos. El compilador genera código que usa estos tipos y miembros necesarios para muchas características de lenguaje diferentes. Por este motivo, las versiones de C# solo se admiten para la versión correspondiente de .NET y versiones más recientes. Esto garantiza el comportamiento correcto en tiempo de ejecución y la disponibilidad de todos los tipos y miembros necesarios.

Esta dependencia de la funcionalidad de biblioteca estándar forma parte del lenguaje C# desde su primera versión. En esa versión, se incluyen ejemplos:

  • Exception : se usa para todas las excepciones generadas por el compilador.
  • String : sinónimo de string.
  • Int32 : sinónimo de int.

Esa primera versión era sencilla: el compilador y la biblioteca estándar se enviaron juntos, y solo había una versión de cada una.

Las versiones posteriores de C# han agregado ocasionalmente nuevos tipos o miembros a las dependencias. Algunos ejemplos son: INotifyCompletionCallerFilePathAttribute y CallerMemberNameAttribute. C# 7.0 agregó una dependencia de ValueTuple para implementar la funcionalidad del lenguaje tuplas. C# 8 requiere System.Index y System.Range para rangos e índices, entre otras características. Cada nueva versión puede agregar requisitos adicionales.

El equipo de diseño de lenguajes trabaja para minimizar el área expuesta de los tipos y miembros necesarios en una biblioteca estándar compatible. Ese objetivo se equilibra con un diseño limpio en el que las nuevas características de biblioteca se incorporan sin problemas al lenguaje. Habrá nuevas características en versiones futuras de C# que requieren nuevos tipos y miembros en una biblioteca estándar. Las herramientas del compilador de C# ahora se desacoplan del ciclo de lanzamiento de las bibliotecas de .NET en plataformas compatibles.