Control de versiones del lenguaje C#
El compilador de C# más actualizado determina una versión de lenguaje predeterminada basada en los marcos o las plataformas de destino del proyecto. Visual Studio no proporciona una interfaz de usuario para cambiar el valor, pero se puede cambiar si se modifica el archivo csproj. La opción predeterminada garantiza que se use la versión del lenguaje más reciente compatible con el marco de trabajo de destino. Se beneficia del acceso a las características de lenguaje más recientes compatibles con el destino del proyecto. Esta opción predeterminada también garantiza que no se use un lenguaje que requiera tipos o el comportamiento en tiempo de ejecución no esté disponible en la plataforma de destino. La elección de una versión del lenguaje más reciente que la predeterminada puede provocar errores en tiempo de compilación y en tiempo de ejecución difíciles de diagnosticar.
C# 13 solo se admite en .NET 9 y versiones más recientes. C# 12 solo se admite en .NET 8 y versiones más recientes. C# 11 solo se admite en .NET 7 y versiones más recientes.
Consulte la página Compatibilidad de la plataforma Visual Studio para más información sobre qué versiones de .NET son compatibles con las versiones de Visual Studio. Consulte la página de Mono para C# para ver la compatibilidad de Mono con versiones de C#.
Valores predeterminados
El compilador determina un valor predeterminado según estas reglas:
Destino | Versión | Versión predeterminada del lenguaje C# |
---|---|---|
.NET | 9.x | C# 13 |
.NET | 8.x | C# 12 |
.NET | 7.x | C# 11 |
.NET | 6.x | C# 10 |
.NET | 5.x | C# 9.0 |
.NET Core | 3.x | C# 8.0 |
.NET Core | 2.x | C# 7.3 |
.NET Standard | 2.1 | C# 8.0 |
.NET Standard | 2.0 | C# 7.3 |
.NET Standard | 1.x | C# 7.3 |
.NET Framework | todo | C# 7.3 |
Si el proyecto tiene como destino un marco de preview
que tenga una versión de lenguaje preliminar correspondiente, la versión de lenguaje que se usa es la que está en versión preliminar. Puede usar las características más recientes con esa versión preliminar en cualquier entorno, sin que afecte a los proyectos que tienen como destino una versión de .NET Core publicada.
Referencia de la versión del lenguaje C#
En la siguiente tabla se muestran las versiones actuales del lenguaje C#. Es posible que los compiladores más antiguos no comprendan todos los valores. Si instala el SDK de .NET más reciente, tendrá acceso a todo lo que aparece.
Value | Significado |
---|---|
preview |
El compilador acepta toda la sintaxis de lenguaje válida de la última versión preliminar. |
latest |
El compilador acepta la sintaxis de la última versión del compilador (incluida las versión secundaria). |
latestMajor o bien default |
El compilador acepta la sintaxis de la versión principal más reciente del compilador. |
13.0 |
El compilador solo acepta la sintaxis que se incluye en C# 13 o versiones anteriores. |
12.0 |
El compilador solo acepta la sintaxis que se incluye en C# 12 o versiones anteriores. |
11.0 |
El compilador solo acepta la sintaxis que se incluye en C# 11 o versiones anteriores. |
10.0 |
El compilador solo acepta la sintaxis que se incluye en C# 10 o versiones anteriores. |
9.0 |
El compilador solo acepta la sintaxis que se incluye en C# 9 o versiones anteriores. |
8.0 |
El compilador acepta solo la sintaxis que se incluye en C# 8.0 o versiones anteriores. |
7.3 |
El compilador acepta solo la sintaxis que se incluye en C# 7.3 o versiones anteriores. |
7.2 |
El compilador acepta solo la sintaxis que se incluye en C# 7.2 o versiones anteriores. |
7.1 |
El compilador acepta solo la sintaxis que se incluye en C# 7.1 o versiones anteriores. |
7 |
El compilador acepta solo la sintaxis que se incluye en C# 7.0 o versiones anteriores. |
6 |
El compilador acepta solo la sintaxis que se incluye en C# 6.0 o versiones anteriores. |
5 |
El compilador acepta solo la sintaxis que se incluye en C# 5.0 o versiones anteriores. |
4 |
El compilador acepta solo la sintaxis que se incluye en C# 4.0 o versiones anteriores. |
3 |
El compilador acepta solo la sintaxis que se incluye en C# 3.0 o versiones anteriores. |
ISO-2 o bien 2 |
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2006 C# (2.0). |
ISO-1 o bien 1 |
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2003 C# (1.0/1.2). |
Nota:
Especificar LangVersion con el valor default
es diferente de omitir la opción LangVersion. Al especificar default
se usa la versión más reciente del lenguaje que admite el compilador, sin tener en cuenta la plataforma de destino. Por ejemplo, compilar un proyecto destinado a .NET 6 desde la versión actual de Visual Studio 2022 usa C# 10 si no se especifica LangVersion, pero usa C# 12 si LangVersion está establecido en default
.